【问题标题】:A simple question about regex usage in list关于列表中正则表达式使用的一个简单问题
【发布时间】:2021-04-11 16:48:54
【问题描述】:

我在下面的列表中有一个列表为“list_all”,我正在寻找一个如下所示的单词“c”。第二个列表中没有“c”。下面的代码给出的结果为 ['c', 'c'] 但我希望 ['c', '', 'c'] 具有相同的长度 'list_all'。你能帮我解决一下如何将空元素放入结果中。

import re

    list_all = [['a','b','c','d'],['a','b','d'],['a','b','c','d','e']]
    
    listofresult =[]
    for h in [*range(len(list_all))]:
        for item in list_all[h]:
            patern = r"(c)"
            if re.search(patern, item):
                listofresult.append(item)
            else:
                None
    
    print(listofresult)

【问题讨论】:

  • 你为什么使用正则表达式?您只需要['c' if 'c' in x else '' for x in list_all],请参阅demo
  • 因为在普通代码中它像 '' a bla bla '' , 'b bla bla' 。句子开头相同,但继续不同,您有什么建议吗?
  • 如果你能提供更多真实的样本,那将会很有帮助。也许您想要ideone.com/IJ1aHl 之类的东西?
  • 我正在废弃产品规格,其中一些具有型号代码,而另一些则没有。并且代码彼此不相似,唯一的共同点是开始'模型代码'。所以列表看起来像 ''list_all = [['a blabla','b bla','c bla','d12'],['a bl','b bl','d bl'],[' a blsl','b bls','c bla','d bla ','e blas']] ''' 这就是我必须使用正则表达式的原因。
  • 好吧,无论如何,看看你的代码:if re.search(patern, item): listofresult.append(item) else: None。您只需在不匹配时发出 None 。您需要在 else 分支中使用 listofresult.append('')

标签: python regex list


【解决方案1】:

试试这个

import re

list_all = [['a','b','c','d'],['a','b','d'],['a','b','c','d','e']]

temp = True
listofresult =[]
for h in range(len(list_all)):
    for item in list_all[h]:
        patern = r"(c)"
        if re.search(patern, item):
            listofresult.append(item)
            temp = False
    if temp:
        listofresult.append("")
    temp = True

print(listofresult)

【讨论】:

  • 如果列表中的每个列表中的'c'多于1个,而您只想取一个'c',则在temp = False之后添加break
  • 非常感谢,它工作正常,如果你能简单地告诉我逻辑,我将不胜感激。
  • 你需要临时变量来判断程序是否找到了'c',如果没有找到'c',它将附加一个空字符串
【解决方案2】:

这是正则表达式的不寻常用法!但如果你坚持,这个更正可能会有所帮助:

import re

list_all = [['a', 'b', 'c', 'd'], ['a', 'b', 'd'], ['a', 'b', 'c', 'd', 'e']]

list_of_result = []
for h in list_all:
    result = ''
    for item in h:
        pattern = r"(c)"
        if re.search(pattern, item):
            result = item
            break
    if result:
        list_of_result.append(result)
    else:
        list_of_result.append('')

print(list_of_result)

【讨论】:

  • 是的,老实说,我的代码中的用法有点不同,我必须使用正则表达式,感谢您的帮助,它工作得很好。
猜你喜欢
  • 2016-10-11
  • 2016-12-11
  • 1970-01-01
  • 2011-05-13
  • 2011-04-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多