python – 如果行包含CSV文件中的字符串,则删除该行

我在删除包含一列中的字符串的文本文件中的行时遇到问题.到目前为止,我的代码无法删除该行,但它能够读取文本文件并将其作为CSV文件保存到单独的列中.但这些行不会被删除.

这就是该列中的值如下所示:

Ship To or Bill To
------------------
3000000092-BILL_TO
3000000092-SHIP_TO
3000004000_SHIP_TO-INAC-EIM

还有20多列和50,000k多行.所以基本上我试图删除包含字符串’INAC’或’EIM’的所有行.

import csv

my_file_name = "NVG.txt"
cleaned_file = "cleanNVG.csv"
remove_words = ['INAC','EIM']

with open(my_file_name, 'r', newline='') as infile, \
     open(cleaned_file, 'w',newline='') as outfile:
    writer = csv.writer(outfile)
    for line in csv.reader(infile, delimiter='|'):
        if not any(remove_word in line for remove_word in remove_words):
            writer.writerow(line)

最佳答案 这里的问题是csv.reader对象将文件的行作为单个列值的列表返回,因此“in”测试检查该列表中的任何单个值是否等于remove_word.

快速修复就是尝试

        if not any(remove_word in element
                      for element in line
                      for remove_word in remove_words):

因为如果行中的任何字段包含任何remove_words,则为true.

点赞