简体   繁体   English

用于在某些两个字符串之间提取字符串的python正则表达式

[英]python regex for extracting strings between certain two strings

Let's assume I have a string 我们假设我有一个字符串

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

I want to extract from st the following 我想从以下提取

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

How can I do this? 我怎样才能做到这一点?

Thanks 谢谢

You can first create dict by ast.literal_eval and then get values : 您可以先通过ast.literal_eval创建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']

Doing it with ast module would be best, like jezrael did it. 使用ast模块这样做是最好的,就像jezrael一样。 Here is another solution with 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)

Output: 输出:

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

Demo on regex101: 在regex101上演示:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM