python正则表达式搜索

2024-09-27 02:16:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我还有一个关于regex的问题,我想了解info1、info2和info3:

>>> a
'|123|blabla bloblo|90'
>>> b
'|123|blabla[[blibli|bloblo]]|90'
>>> re.search('\|(?P<info1>\d+)\|(?P<info2>[^\|]*)\|(?P<info3>\d+)',a).groupdict()
{'info1': '123', 'info3': '90', 'info2': 'blabla bloblo'}
>>> re.search('\|(?P<info1>\d+)\|(?P<info2>[^\|]*)\|(?P<info3>\d+)',b).groupdict()
AttributeError: 'NoneType' object has no attribute 'groupdict'

我想使用|作为分隔符,除非它被[[]]或{}}包围 对于b我想要:

^{pr2}$

谢谢


Tags: noresearchobjectregexattributeerrorhasnonetype
1条回答
网友
1楼 · 发布于 2024-09-27 02:16:36

为了给您一个替代方案,假设您的数据不包含引号",或者您可以用任何其他字符替换它,这里是使用csv模块的地方

import csv
import StringIO
data = '|123|blabla|[[blibli|bloblo]]|90'
# assuming data doesn't have quotes, we can convert [[ and ]] to quotes and use csv to parse it
data = data.replace('[[','"').replace(']]','"')
print data
for row in csv.reader(StringIO.StringIO(data), delimiter='|', quotechar='"'): 
    print row

输出:

^{pr2}$

相关问题 更多 >

    热门问题