我正在尝试编写接受字符串并从中删除特定数据的代码。我知道数据将看起来像下面的线,并且我只需要“”标记内的数据,而不是标记本身。
inputString = 'type="NN" span="123..145" confidence="1.0" '
有没有一种方法可以让一个字符串的子串在两个字符以内,从而知道起始点和结束点?
发布于 2012-08-21 17:03:29
您可以使用正则表达式提取"
字符对之间的所有文本:
import re
inputString='type="NN" span="123..145" confidence="1.0" '
pat=re.compile('"([^"]*)"')
while True:
mat=pat.search(inputString)
if mat is None:
break
strings.append(mat.group(1))
inputString=inputString[mat.end():]
print strings
或者,更简单:
import re
inputString='type="NN" span="123..145" confidence="1.0" '
strings=re.findall('"([^"]*)"', inputString)
print strings
两个版本的输出:
['NN', '123..145', '1.0']
发布于 2012-08-21 17:12:43
fields = inputString.split('"')
print fields[1], fields[3], fields[5]
发布于 2012-08-21 17:14:20
您可以在每个空格处拆分字符串,以获得‘key=“value”子字符串的列表,然后使用正则表达式来解析子字符串。
使用您的输入字符串:
>>> input_string = 'type="NN" span="123..145" confidence="1.0" '
>>> input_string_split = input_string.split()
>>> print input_string_split
[ 'type="NN"', 'span="123..145"', 'confidence="1.0"' ]
然后使用正则表达式:
>>> import re
>>> pattern = r'"([^"]+)"'
>>> for substring in input_string_split:
match_obj = search(pattern, substring)
print match_obj.group(1)
NN
123..145
1.0
正则表达式‘“(^”+)“匹配引号内的任何字符(只要至少有一个字符)。圆括号表示您感兴趣的正则表达式的位。
https://stackoverflow.com/questions/12059634
复制