Python字符串提取:提取两个预定义字符串之间的部分

时间:2020-04-13 08:43:43

标签: python python-3.x string

让我说一个像这样的字符串:

"ID: 123 Name: Michael , ID: 124 Name: John" 

我想像列表一样提取所有ID,这些列表是"ID:""Name:"之间的单词

我想要的输出:

output = ['123', '124']

如何最有效地做到这一点?非常感谢=)

2 个答案:

答案 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']