我正在尝试编写将采用字符串并从中删除特定数据的代码。我知道数据看起来像下面的行,我只需要“”标记内的数据,而不是标记本身。
inputString = 'type="NN" span="123..145" confidence="1.0" '
有没有办法在两个字符内取一个字符串的子串来知道起点和终点?
答案 0 :(得分:2)
您可以使用正则表达式提取"
个字符对之间的所有文本:
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']
答案 1 :(得分:0)
fields = inputString.split('"')
print fields[1], fields[3], fields[5]
答案 2 :(得分:0)
您可以在每个空格处拆分字符串,以获得' key ="值"'子字符串然后使用正则表达式来解析子字符串。
使用输入字符串:
>>> 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
正则表达式""([^"] +)"'匹配引号内的任何内容(前提是至少有一个字符)。圆括号表示您感兴趣的正则表达式的位。