List Python 2.7如果没有任何语法?
我刚刚从at的问题中读到了一个精彩的回答,同时正在寻找一种方法来过滤txt/csv文件中的垃圾行。要点是“从输入文件中提取x、y、z单词/字符串/任何内容,然后过滤每一行,只写未过滤的行。” 他发布的代码是:List Python 2.7如果没有任何语法?,list,python-2.7,if-statement,syntax,List,Python 2.7,If Statement,Syntax,我刚刚从at的问题中读到了一个精彩的回答,同时正在寻找一种方法来过滤txt/csv文件中的垃圾行。要点是“从输入文件中提取x、y、z单词/字符串/任何内容,然后过滤每一行,只写未过滤的行。” 他发布的代码是: bad_words = ['bad', 'naughty'] with open('oldfile.txt') as oldfile, open('newfile.txt', 'w') as newfile: for line in oldfile: if not any(bad
bad_words = ['bad', 'naughty']
with open('oldfile.txt') as oldfile, open('newfile.txt', 'w') as newfile:
for line in oldfile:
if not any(bad_word in line for bad_word in bad_words):
newfile.write(line)
我的问题是:有人能解释一下这句话吗?
(如果没有的话):
我试着输入如果没有(行中有坏单词):
但它给了我一个错误
我正在努力理解为什么。在python文档网页上粗略搜索对我没有帮助(我是python/编程新手,可能不会太聪明而无法启动:-))
如有任何参考资料供我阅读,不胜感激
谢谢
有人能解释一下这句话吗?如果没有的话(用坏词代替坏词) 当然
bad_word in line for bad_words in bad_words
就是所谓的一个。它与a非常相似,但内存效率更高
if not any(bad_word in line for bad_word in bad_words):
newfile.write(line)
基本相当于:
list1 = []
for bad_word in bad_words:
if bad_word in line:
list1.append(True)
else:
list1.append(False)
if not any(list1):
newfile.write(line)
我试着输入如果没有(行中有坏单词):
但它给了我一个错误
是的,因为需要一个iterable作为输入,并且您已经提供了一个布尔值(bad_word in line
的计算结果为True或False,您不能对其进行迭代)
试着提供一些你可以重复使用的东西,比如一个列表:
如果没有([True,False,True]):
可能是重复的谢谢,我正在查看该页面。你必须是一个快速的读者,在我发布后你几乎立即回复。非常感谢你的帮助。@ArkhamAngel可以随意投票和/或接受答案“bad_word in line for bad_words in bad_words”是一个生成器而不是一个列表。这是你的意思吗?“因为any
将列表作为输入,并且您提供了一个迭代器”。。。不正确,行中的坏字
给出的是布尔值,而不是迭代器。