在python中使用正则表达式创建列表列表

时间:2018-10-28 00:29:13

标签: python python-3.x list nsregularexpression

我以为我已经使用python中的正则表达式成功创建并过滤了列表列表。但是,当我尝试索引列表时,我只是索引了每个列表中的第一项。仔细检查后,我发现列表之间没有逗号。我想知道如何将每个单独的列表转换为列表列表?

我想这样做,以便我可以引用不同的列表并声明列表是否符合特定条件。

import re



 list_of_strings = ['''<z><x><c></v></b></n>''',
 '''<paa>mnb<ore>mnbczx</bar><e>poiuy</e></paa>''',
 '''<paa><ore></lan></ore></paa>''',
 '''<paa><ore></ore></paa></paa>''',
 '''<paa><ore></paa></ore>''']
def valid_html(list_of_strings):
    matches = [[s] for s in list_of_strings]
    lst = []
    for item in matches:
        tagsRegex = re.compile(r'(<.{0,3}>|</.{0,3}>)')
        lst = (tagsRegex.findall(str(item)))
        find = re.compile(r'(<)|(>)')
        no_tags = [find.sub('', t) for t in lst]
        print(no_tags)
        print(no_tags[0])
valid_html(test_strings)

我的输出是:

valid_html(test_strings)
['z', 'x', 'c', '/v', '/b', '/n']
z
['paa', 'ore', '/ore', 'e', '/e', '/paa']
paa
['paa', 'ore', '/lan', '/ore', '/paa']
paa
['paa', 'ore', '/ore', '/paa', '/paa']
paa
['paa', 'ore', '/paa', '/ore']
paa

谢谢您的时间!

1 个答案:

答案 0 :(得分:0)

您要插入到循环中并在循环中进行打印。您需要在需要返回相同值的for循环之外进行打印

def valid_html(list_of_strings):
    matches = [[s] for s in list_of_strings]
    lst = []
    l=[]
    for item in matches:
        tagsRegex = re.compile(r'(<.{0,3}>|</.{0,3}>)')
        lst = (tagsRegex.findall(str(item)))
        find = re.compile(r'(<)|(>)')
        no_tags = [find.sub('', t) for t in lst]
        l.append(no_tags)
    return l
valid_html(list_of_strings)[0]