python,列出两个标签之间的所有内容

时间:2011-06-22 04:15:09

标签: python string tags

我正在寻找最简单的编码方法。

说我有一个包含'the f<ox jumpe>d over the l<azy> dog <and the >fence'

的字符串

使用&lt;作为开头标签&gt;作为结束标记,我想将中间的所有内容保存到列表中。

如果保存到list1中,list1将等于['ox jumpe','azy','和']

谁知道一个漂亮,整洁的 SHORT 方式来做到这一点。

谢谢!

2 个答案:

答案 0 :(得分:5)

正则表达式应该在这里诀窍:

import re

text = 'the f<ox jumpe>d over the l<azy> dog <and the >fence'
list = re.findall('.*?\<(.*?)\>.*?', text)

print list

修改

您可以阅读有关正则表达式here

的更多信息

主要是,上面的正则表达式是:

。*? - 所有角色的非贪婪匹配,直到下一个想要的字符

\&LT; - 匹配&lt;炭

(。*?) - 所有角色的非贪婪匹配,直到下一个想要的字符,捕获并返回它们

答案 1 :(得分:1)

假设每个“&lt;”和每一个“&gt;”表示标签的开头或结尾,例如你不能<hi<there>

x="<a><bb><ccc>"
>>> starts=(i for i,c in enumerate(x) if c=="<")
>>> ends=(i for i,c in enumerate(x) if c==">")
>>> ans=[x[i+1:j] for i,j in zip(starts,ends)]
>>> ans
['a', 'bb', 'ccc']

如果它是一个大的xml文件来保存内存,请使用izip(尽管x [i + 1:j]需要更改,因为你不希望将整个文件作为字符串)。