Python 正则表达式搜索一个单词并提取一个字符
需要帮助解析字符串,其中包含每个属性的值。下面是我的示例字符串Python 正则表达式搜索一个单词并提取一个字符,python,regex,apache-spark,pyspark,Python,Regex,Apache Spark,Pyspark,需要帮助解析字符串,其中包含每个属性的值。下面是我的示例字符串 Type=<Series VR> Model=<1Ac4> ID=<34> conn seq=<2> 我不熟悉使用正则表达式。感谢您的帮助。谢谢此脚本将从字符串中提取键、值: import re s = 'Type=<Series VR> Model=<1Ac4> ID=<34> conn seq=<2>' for k, v in
Type=<Series VR> Model=<1Ac4> ID=<34> conn seq=<2>
我不熟悉使用正则表达式。感谢您的帮助。谢谢此脚本将从字符串中提取键、值:
import re
s = 'Type=<Series VR> Model=<1Ac4> ID=<34> conn seq=<2>'
for k, v in re.findall(r'([^=]+)=<([^>]+)>\s*', s):
print('{}={}'.format(k, v))
编辑:您可以将键、值提取到字典,然后通过
访问它。get()
:
试试这个:
r'([^=]+)=]+)>'
这项工作如下:
([^=]+)
匹配一组不是=
且至少有一个字符长的字符=
]+)
匹配另一组非
且至少有一个字符长的字符'Model'
):
r'Model=]+)>'
现在只有一个分组,即与
中包含的值匹配的([^>]+)
分组。这可以推广到任何键,比如:f'{key}=]+>“
那么这是Python还是Java?谢谢Collin的解释。是否有任何方法可以搜索特定的键并提取它自己的值。与在字符串中搜索模型并仅返回其值“1Ac4”一样,请确定,而不是使用([^=]+)
分组,逐字匹配该字符串。例如:r'Model=]+)>“
我会把它放在我的答案中。谢谢你的解决方案谢谢你的快速解决方案Andrej。寻找任何方法来搜索特定的键并提取它自己的值。类似于在字符串中搜索模型并仅返回其值“1Ac4”。。。就像不使用循环和基于键提取值一样,如果不存在,则希望将其设置为null。@marc我更新了我的答案。您可以使用正则表达式生成dict,并通过带有默认值的[]
或.get()
访问它(如果没有键)。感谢您提供的解决方案
import re
s = 'Type=<Series VR> Model=<1Ac4> ID=<34> conn seq=<2>'
for k, v in re.findall(r'([^=]+)=<([^>]+)>\s*', s):
print('{}={}'.format(k, v))
Type=Series VR
Model=1Ac4
ID=34
conn seq=2
import re
s = 'Type=<Series VR> Model=<1Ac4> ID=<34> conn seq=<2>'
d = dict(re.findall(r'([^=]+)=<([^>]+)>\s*', s))
print(d.get('Model', ''))
print(d.get('NonExistentKey', ''))
1Ac4