这是我的字符串:
'<.tag> xxxxx<./tag> <.tag>'
我想将其附加到列表中,如下所示:
x=['<.tag>','xxxx','<./tag>','<.tag>']
答案 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'之类的东西