python - Python字符串提取:提取两个预定义字符串之间的部分
问题描述
假设我有一个这样的字符串:
"ID: 123 Name: Michael , ID: 124 Name: John"
我想提取所有的ID,就像一个列表,它是介于"ID:"
和之间的单词"Name:"
我想要的输出:
output = ['123', '124']
我怎样才能最有效地做到这一点?非常感谢=)
解决方案
你可以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
作为与键对应的值。
推荐阅读
- python - 自定义函数的矢量化未将函数应用于系列的每一行
- vb.net - 范围、命名空间和文件架构
- python - 即使正确安装,Spyder 也无法启动
- sql - sql oracle比较包含子字符串的字符串
- c# - 更改代码以通过单击按钮运行将不起作用
- linux - 如何使用“ls”列出根目录和子目录中的所有文本文件
- c# - WPF - 如何为 ComboBox 触发 MouseLeftButtonUp 事件?
- php - 预赛不采用大字母数字组合
- javascript - 如果我不知道类别数组的深度,打印这个的递归方式是什么
- javascript - 为什么 Webpack 会注入 React