Python正则表达式提取两个字串之间的字符串

2024-04-20 00:22:58 发布

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

假设我有一根弦

st = "'aaa': '1', 'bbb': '2.3', 'ccc': 'name'"

我想从st摘录以下内容

['1', '2.3', 'name']

我该怎么做

谢谢


Tags: namestbbbcccaaa
2条回答

最好使用ast模块,就像jezrael那样。下面是使用regex的另一个解决方案:

import re

st = "'a': '1', 'b': '2.3', 'c': 'name', 'd': 229, 'e': '', 'f': '228', 'g': 12"
print re.findall(r'\'\S+?\':\s*\'?(.*?)\'?(?:,|$)', st)

输出:

['1', '2.3', 'name', '229', '', '228', '12']

regex101上的演示:

https://regex101.com/r/zGAt4D/5

您可以首先通过^{}创建dict,然后获得values

import ast

st = "'aaa': '1', 'bbb': '2.3', 'ccc': 'name'"

print (ast.literal_eval('{' + st + '}'))
{'aaa': '1', 'bbb': '2.3', 'ccc': 'name'}

#python 3 add list
print (list(ast.literal_eval('{' + st + '}').values()))
['1', '2.3', 'name']

#python 2
print ast.literal_eval('{' + st + '}').values()
['1', '2.3', 'name']

相关问题 更多 >