如何从字符串解析?

时间:2015-05-07 16:28:55

标签: python

我有标签“Key”的字符串,我需要在标签内部获取文字。

string = "<Key>big_img/1/V071-e.jpg</Key>"

需要"big_img/1/V071-e.jpg"

3 个答案:

答案 0 :(得分:2)

使用正则表达式:

import re

s = "<Key>big_img/1/V071-e.jpg</Key>"

re.findall(r"<Key>(.*)</Key>",s)
['big_img/1/V071-e.jpg']

答案 1 :(得分:0)

最简单的解决方案:

string.trim()[5:-6]

这适用于任何长度字符串,只要它以<Key>开头并以</Key>结尾。

它的工作原因是:

  • trim()删除任何无关的空白字符
  • <Key>将始终位于字符串的前5个字符中,所以在之后开始1个字符(记住序列/字符串索引是从0开始的,所以从5开始实际上是从第6个字符开始)
  • </Key>的开头始终是字符串末尾的6个字符,所以在该点之前停止

答案 2 :(得分:0)

使用Python的xml.etree.ElementTree模块来解析XML字符串。如果您的文件类似于:

<root>
    <Key>big_img/1/V071-e.jpg</Key>
    <Key>big_img/1/V072-e.jpg</Key>
    <Key>big_img/1/V073-e.jpg</Key>
    <Key>...</Key>
</root>

首先,解析您的数据:

from xml.etree import ElementTree

# To parse the data from a string.
doc = ElementTree.fromstring(data_string)

# Or, to parse the data from a file.
doc = ElementTree.parse('data.xml')

然后,阅读并打印出每个<Key>的文字:

for key_element in doc.findall('Key'):
    print(key_element.text)

应输出:

big_img/1/V071-e.jpg
big_img/1/V072-e.jpg
big_img/1/V073-e.jpg