1

我正在尝试编写将获取字符串并从中删除特定数据的代码。我知道数据看起来像下面的行,我只需要“”标记内的数据,而不是标记本身。

inputString = 'type="NN" span="123..145" confidence="1.0" '

有没有办法在两个字符内获取一个字符串的子字符串来知道起点和终点?

4

3 回答 3

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']
于 2012-08-21T17:03:28.617 回答
0
fields = inputString.split('"')
print fields[1], fields[3], fields[5]
于 2012-08-21T17:12:42.500 回答
0

您可以在每个空格处拆分字符串以获取 '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

正则表达式 '"([^"]+)"' 匹配引号内的任何内容(前提是至少有一个字符)。圆括号表示您感兴趣的正则表达式的位。

于 2012-08-21T17:14:19.610 回答