基于字符在Python中打破子串

时间:2012-08-21 16:58:41

标签: python string character substring break

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

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

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

3 个答案:

答案 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

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