让我说一个像这样的字符串:
"ID: 123 Name: Michael , ID: 124 Name: John"
我想像列表一样提取所有ID,这些列表是"ID:"
和"Name:"
之间的单词
我想要的输出:
output = ['123', '124']
如何最有效地做到这一点?非常感谢=)
答案 0 :(得分:4)
您可以在此处使用re.findall
。您可以在'ID: number Name:
之间提取 Number 。
s=" ID: 123 Name: Michael , ID: 124 Name: John "
re.findall(r'ID: (\d+) Name',s)
# ['123', '124']
正则表达式模式说明r'ID: (\d+) Name'
您可以阅读有关regex Syntax
\d+
用于捕获数字()
用于捕获包含在它们之间的模式。re.findall
返回字符串中所有不重叠匹配项的列表。如果模式中存在一个或多个捕获组,则返回
组列表;这将是一个元组列表,如果模式
有一个以上的小组。我建议使用字典,而不是将详细信息存储在字符串中。
details={'123':'Micheal','124':'John'}
由于每个ID
都是唯一的,因此您可以将其用作键,并将Name
用作与该键对应的值。
答案 1 :(得分:2)
尝试一下:
[ i for i in " ID: 123 Name: Michael , ID: 124 Name: John ".split() if i.isnumeric()]
给出输出:
['123', '124']