【发布时间】:2020-12-27 11:07:39
【问题描述】:
我正在尝试仅解析对我的电子邮件的回复,这些回复存储在 CSV 文件中。我正在使用this library,这似乎是为了做到这一点。我的 CSV 列如下所示:
Date From Name From Address To Subject Message
我要做的是阅读message列,执行EmailReplyParser.parse_reply(email_message)的清理功能并将其替换为清理后的电子邮件。
这就是我现在拥有的:
from email_reply_parser import EmailReplyParser
import csv
with open('D:/Harry_Potter.csv', encoding="utf8") as inf:
reader = csv.reader(inf.readlines())
with open('D:/clean.csv', 'w') as outf:
writer = csv.writer(outf)
for row in reader:
EmailReplyParser.parse_reply(row['Message'])
writer.writerows(reader)
这是我得到的错误:TypeError: list indices must be integers or slices, not str。
我该如何解决这个问题?
【问题讨论】:
-
row是一个列表。您只能使用整数作为列表的索引,而不是字符串(如'Message')。 -
也许您的意思是使用
csv.DictReader而不是csv.reader? -
@mkrieger1 我可以尝试替换它,
DictReader看起来更合适。但是,替换字符串的其他逻辑是否正确? -
我猜不是。你不使用
EmailReplyParser.parse_reply和writer.writerows(reader)的结果似乎没有多大意义。 -
现在也出现此错误:
ValueError: I/O operation on closed file.我猜是因为文件在解析之前已被读取并关闭。