re 正则表达式?
>>> import re>>> a = '1,2,"3,4",5,6,"7,8",9,0'
>>> b = re.findall('(\".*?\")', a)
>>> print(b)
['"3,4"', '"7,8"']
上述为选择带引号的内容,如何利用该正则表达式反选得到下列结果?['1', '2', '5', '6', '9', '0']
回答:
引号之外的内容是以逗号分割的,所以一定少不了逗号分割的步骤
先把字符串 a
改复杂些用于测试
a = '"3,4",1,2,"3,4","3,4",5,6,"7,8",9,0,"3,4"'
以下的几种做法都可以达到效果
删除带引号的文本,再以逗号分割
re.sub('(?:".*?",?|,".*?")', '', a).split(',')# ['1', '2', '5', '6', '9', '0']
匹配以逗号分割的文本,且不包含逗号和引号
re.findall('(?<![^,])[^,"]*(?![^,])', a)# ['1', '2', '5', '6', '9', '0']
匹配以引号之外的逗号分割的文本,再过滤出未带引号的文本
[m[1] for m in re.finditer('(?:".*?"|(.*?))(?:,|$)', a) if m[1]]# ['1', '2', '5', '6', '9', '0']
回答:
re.sub('(\".*?\",*)', '', a).strip(",").split(",")
以上是 re 正则表达式? 的全部内容, 来源链接: utcz.com/p/938569.html