从字符串中提取特定值

2024-04-23 14:48:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我想提取具有以下标签"w="的所有单词。例如,我需要下面字符串中的" THAT HAVE RECEIVED NO"。你知道吗

w="THAT" v="22.23092" a="19.09109" i="3"/>
<r s="1480150" d="150" w="HAVE" v="20.66713" a="19.09183" i="3"/>
<r s="1480300" d="360" w="RECEIVED" v="18.70063" a="19.09165" i="2"/>
<r s="1480660" d="200" w="-SIL-" v="11.65527" a="19.09165" i="0"/>
<r s="1480860" d="210" w="NO" v="18.49828" a="19.09137" i="2"/>
<r s="1481070" d="4330" w="-S-" v="11.55029" a="19.09137" i="0"/>
<r s="1485400" d="4170" w="-S-" v="11.88606" a="19.09137" i="0"/>

我一直在尝试使用以下正则表达式:

 matches = re.findall('(?<=[w][=])\w+',line)

然而,它似乎不起作用。请帮忙。你知道吗


Tags: no字符串rethathaveline标签单词
2条回答

你想要更像

re.findall('(w=")([^"]*)(")', line)

什么?你知道吗

像这样:

>>> import re
>>> re.findall(r'w="(\w+)"',strs,re.DOTALL)
['THAT', 'HAVE', 'RECEIVED', 'NO']

然后使用str.join获取单个字符串:

>>> " ".join(re.findall(r'w="(\w+)"',strs,re.DOTALL))
'THAT HAVE RECEIVED NO'

其中strs是:

>>> print strs
w="THAT" v="22.23092" a="19.09109" i="3"/>
<r s="1480150" d="150" w="HAVE" v="20.66713" a="19.09183" i="3"/>
<r s="1480300" d="360" w="RECEIVED" v="18.70063" a="19.09165" i="2"/>
<r s="1480660" d="200" w="-SIL-" v="11.65527" a="19.09165" i="0"/>
<r s="1480860" d="210" w="NO" v="18.49828" a="19.09137" i="2"/>
<r s="1481070" d="4330" w="-S-" v="11.55029" a="19.09137" i="0"/>
<r s="1485400" d="4170" w="-S-" v="11.88606" a="19.09137" i="0"/>

相关问题 更多 >