Python:提取字符串中的所有子字符串

时间:2016-03-29 21:15:53

标签: python html string parsing tags

我有一个大字符串,格式如下:

'324/;.ke5 efwef dwe,werwrf <>i want this<> ergy;'56\45,> thu ;lokr<>i want this<> htur ;''\> htur> jur'

我知道我可以按照以下方式做点什么:

result= text.partition('<>')[-1].rpartition('<>')[0]

但这只会给我第一个&lt;&gt;之间的内容。和最后一个&lt;&gt;在字符串中,我如何遍历整个字符串并提取每个字符串之间的内容&lt;&gt; &LT;&GT;标签对?

2 个答案:

答案 0 :(得分:1)

您可以使用正则表达式和findall()

>>> import re
>>> s = "324/;.ke5 efwef dwe,werwrf <>i want this<> ergy;'56\45,> thu ;lokr<>i want this<> htur ;''\> htur> jur"
>>> re.findall(r"<>(.*?)<>", s)
['i want this', 'i want this']

其中(.*?)是一个捕获组,可以在non-greedy模式下任意次数匹配任何字符。

答案 1 :(得分:0)

我认为string.split()就是你想要的:

>>> text = """'324/;.ke5 efwef dwe,werwrf <>i want this<> ergy;'56\45,> thu ;lokr<>i want this<> htur ;''\> htur> jur'"""
>>> print text.split('<>')[1:-1]
['i want this', " ergy;'56%,> thu ;lokr", 'i want this']

split()方法为您提供了一个字符串列表,其中参数用作分隔符。 (https://docs.python.org/2/library/string.html#string.split)然后,[1:-1]会为您提供一个没有第一个和最后一个元素的列表片段。