Python 3.x 关于字符串和字节仍不工作的CSV错误

Python 3.x 关于字符串和字节仍不工作的CSV错误,python-3.x,csv,Python 3.x,Csv,我一直遇到一个错误,看起来我真的应该根据我在网上读到的内容来调试它。我正在尝试将行从一个CSV追加到另一个CSV 这就是错误: for row in reader: _csv.Error: iterator should return strings, not bytes (did you open the file in text mode?) 下面是我的代码。我尝试过这些的细微变化,比如“rt”而不是“r” 第二次尝试 reader = csv.reader(open('input.csv

我一直遇到一个错误,看起来我真的应该根据我在网上读到的内容来调试它。我正在尝试将行从一个CSV追加到另一个CSV

这就是错误:

for row in reader:
_csv.Error: iterator should return strings, not bytes (did you open the file in text mode?)
下面是我的代码。我尝试过这些的细微变化,比如“rt”而不是“r”

第二次尝试

reader = csv.reader(open('input.csv', 'r', encoding="utf-8"))
writer = csv.writer(open('output.csv', 'a'))
for row in reader:
    if "EMAIL" or "EMAIL ADDRESS" or "Email" in row:
        writer.writerow(row)
我上次试过这个

reader = csv.reader(open('input.csv', 'r', encoding="ascii"))
writer = csv.writer(open('output.csv', 'a'))
for row in reader:
    if "EMAIL" or "EMAIL ADDRESS" or "Email" in row:
        writer.writerow(row)

非常感谢您的帮助

@Primusa的可能重复我一直在跟踪这些答案,你可以从我一直在尝试的内容看出,它没有起作用。每次都会发生相同的错误?
如果第行的“EMAIL”或“EMAIL ADDRESS”或“EMAIL”不正确。如果第行为“电子邮件”或第行为“电子邮件地址”或第行为“电子邮件”,则必须为
。更好的解决方案是
如果在row.lower()中使用“email”(
)。这句话可能与您的问题无关,但确实说明了您程序的正确性。请忽略我之前评论中关于
row.lower()
的部分,因为它是不正确的。
reader = csv.reader(open('input.csv', 'r', encoding="ascii"))
writer = csv.writer(open('output.csv', 'a'))
for row in reader:
    if "EMAIL" or "EMAIL ADDRESS" or "Email" in row:
        writer.writerow(row)