我正在寻找最简单的编码方法。
说我有一个包含'the f<ox jumpe>d over the l<azy> dog <and the >fence'
使用&lt;作为开头标签&gt;作为结束标记,我想将中间的所有内容保存到列表中。
如果保存到list1中,list1将等于['ox jumpe','azy','和']
谁知道一个漂亮,整洁的 SHORT 方式来做到这一点。
谢谢!
答案 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]需要更改,因为你不希望将整个文件作为字符串)。