首页 > 解决方案 > Python字符串提取:提取两个预定义字符串之间的部分

问题描述

假设我有一个这样的字符串:

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

我想提取所有的ID,就像一个列表,它是介于"ID:"和之间的单词"Name:"

我想要的输出:

output = ['123', '124']

我怎样才能最有效地做到这一点?非常感谢=)

标签: pythonpython-3.xstring

解决方案


你可以re.findall在这里使用。您可以'ID: number Name:.

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作为与键对应的值。


推荐阅读