首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python将所有内容都放在括号内,除非以引号表示

Python将所有内容都放在括号内,除非以引号表示
EN

Stack Overflow用户
提问于 2015-04-19 04:19:29
回答 4查看 1.7K关注 0票数 4

给定字符串

代码语言:javascript
复制
S = "(45171924,-1,'AbuseFilter/658',2600),(43795362,-1,'!!_(disambiguation)',2600),(45795362,-1,'!!_(disambiguation)',2699)"

我想提取括号内的所有内容,除非父母在引号中。到目前为止,我已经设法在括号内得到了所有的东西,但是我不知道如何停止在引号内的内括号上分裂。我目前的代码是:

代码语言:javascript
复制
import re
S = "(45171924,-1,'AbuseFilter/658',2600),(43795362,-1,'!!_(disambiguation)',2600),(45795362,-1,'!!_(disambiguation)',2699)"

p = re.compile( "\((.*?)\)" )
m =p.findall(S)
for element in m:
    print element

我想要的是:

代码语言:javascript
复制
45171924,-1,'AbuseFilter/658',2600
43795362,-1,'!!_(disambiguation)',2600
45795362,-1,'!!_(disambiguation)',2699

我现在得到的是:

代码语言:javascript
复制
45171924,-1,'AbuseFilter/658',2600
43795362,-1,'!!_(disambiguation
45795362,-1,'!!_(disambiguation

我能做些什么来忽略内部的帕伦?

谢谢你!!

为了防止有帮助,下面是我看过的线程:

1) REGEX-String和转义引号

2) 正则表达式在括号之间返回文本

3)在Python中将字符串置于括号内

EN

回答 4

Stack Overflow用户

发布于 2015-04-19 04:33:07

可以使用非捕获组断言逗号或字符串的结尾:

代码语言:javascript
复制
p = re.compile(r'\((.*?)\)(?:,|$)')

工作演示

票数 3
EN

Stack Overflow用户

发布于 2015-04-19 04:46:44

代码语言:javascript
复制
for element in S[1:-1].split('),('):
    print element
票数 1
EN

Stack Overflow用户

发布于 2015-04-19 06:32:34

你可以用下面的正则表达式。

代码语言:javascript
复制
>>> import re
>>> s = "(45171924,-1,'AbuseFilter/658',2600),(43795362,-1,'!!_(disambiguation)',2600),(45795362,-1,'!!_(disambiguation)',2699)"
>>> for i in re.findall(r"\(((?:'[^']*'|[^()])*)\)", s):
        print(i)


45171924,-1,'AbuseFilter/658',2600
43795362,-1,'!!_(disambiguation)',2600
45795362,-1,'!!_(disambiguation)',2699

解释:

  • \( -匹配文字(符号)。
  • ( -捕获组的开始。
  • (?:'[^']*'|[^()])* - '^'*‘部件贪婪地匹配单引号块。如果有任何()符号在里面,它不会关心这一点。因为我们使用的是[^']*,它匹配任何字符,但不匹配',0次或多次。如果下面的字符不是单个引号块的开始,则该控件将转移到|符号(即[^()] )旁边的模式,该模式与任何字符匹配,但不匹配()。因此,整个(?:'[^']*'|[^()])*将匹配单个引用的块或任何字符(不包括()、0次或多次)。
  • 捕获组的)末端。
  • ( \)文字)符号。

演示

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29725739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档