Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List Python 2.7如果没有任何语法?_List_Python 2.7_If Statement_Syntax - Fatal编程技术网

List Python 2.7如果没有任何语法?

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

我刚刚从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_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
将列表作为输入,并且您提供了一个迭代器”。。。不正确,
行中的坏字
给出的是布尔值,而不是迭代器。