猿问

删除空列表元素

我有一个源代码列表,正在查看它以查找匹配的字符串并返回列表中的所有匹配项。问题是每次找不到匹配项时我都会得到一个空列表元素。


例如: ["matchone","",matchtwo"", .....]


代码如下所示:


    name_match = re.compile("\s\w+\(")

    match_list = []

    match_list_reformat = []


   for x in range(0,30):

       if name_match.findall(source_code[x]) != None:

        match_list.append(gc_name_match.findall(source_code[x]))

        format = "".join([c for c in match_list[x] if c is not '(']).replace("(", "")

        match_list_reformat.append(format)


return match_list_reformat

使用“if name_match.findall(source_code[x]) != None:”不会改变结果。


在旁注。我怎样才能用这个 def 浏览源代码的所有行?range(0,30) 只是一种解决方法。


蓝山帝景
浏览 148回答 2
2回答

慕慕森

最简单的没有re,因为 Python 3 从过滤器返回一个迭代器,所以应该包装在对list()>>> mylst['matchone', '', 'matchtwo', '', 'matchall', '']>>> list(filter(None, mylst))['matchone', 'matchtwo', 'matchall']过滤 速度最快。从文件:filter(function, iterable) 从那些函数返回 true 的 iterable 元素构造一个迭代器。iterable 可以是一个序列、一个支持迭代的容器或一个迭代器。如果 function 为 None,则假定恒等函数,即删除所有为 false 的 iterable 元素。注意 filter(function, iterable) 等价于生成器表达式(item for item in iterable if function(item)) if function is not None and (item for item in iterable if item) if function is None。
随时随地看视频慕课网APP

相关分类

Python
我要回答