将html字符串拆分为列表

时间:2019-02-08 05:22:19

标签: python

这是我的字符串:

'<.tag> xxxxx<./tag> <.tag>'

我想将其附加到列表中,如下所示:

x=['<.tag>','xxxx','<./tag>','<.tag>']

2 个答案:

答案 0 :(得分:3)

为此目的使用re.findall

  

以字符串的形式返回字符串中所有不重复的模式匹配项   字符串。从左到右扫描字符串,并返回匹配项   按照找到的顺序。如果模式中存在一个或多个组,   返回组列表;这将是一个元组列表,如果模式   有一个以上的团体。空匹配项包含在结果中

In [1]: a='<.tag> xxxxx<./tag> <.tag>'

In [2]: import re
In [4]: re.findall(r'<[^>]+>|\w+',a)
Out[4]: ['<.tag>', 'xxxxx', '<./tag>', '<.tag>']

In [5]: re.findall(r'<[^>]+>|[^<]+',a)
Out[5]: ['<.tag>', ' xxxxx', '<./tag>', ' ', '<.tag>']

In [17]: [i.strip() for i in re.findall(r'<[^>]+>|[^<]+',a) if not i.isspace()]
Out[17]: ['<.tag>', 'xxxxx', '<./tag>', '<.tag>']

答案 1 :(得分:1)

awesoon的权利,请使用解析器。

但是,这可以做到:

def f(x):
    lst = []
    rec = ""
    for i in x:
        if i == "<":
            if rec != "":
                lst.append(rec)
            rec = ""
        rec += i
        if i == ">":
            lst.append(rec)
            rec = ""
    return lst

它实际上记录了“ <”和“>”之间的所有内容,并将其添加到列表中。它还记录了所有“>”和“ <”之间的间隔,以便记录诸如'xxxx'之类的东西