为了账号安全,请及时绑定邮箱和手机立即绑定

将 html 字符串拆分为列表

将 html 字符串拆分为列表

守着一只汪 2021-11-02 16:08:10
这是我的字符串:'<.tag> xxxxx<./tag> <.tag>'我想将它附加到一个列表中:x=['<.tag>','xxxx','<./tag>','<.tag>']
查看完整描述

2 回答

?
青春有我

TA贡献1784条经验 获得超8个赞

使用 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>']


查看完整回答
反对 回复 2021-11-02
?
米脂

TA贡献1836条经验 获得超3个赞

非常正确,使用解析器。


但是,这会做到:


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”之类的内容


查看完整回答
反对 回复 2021-11-02
  • 2 回答
  • 0 关注
  • 245 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信