Python:SyntaxError
我正在编写一个脚本来解析电子邮件,但在下面的部分中,for循环中有一些Python:SyntaxError,python,csv,syntax-error,Python,Csv,Syntax Error,我正在编写一个脚本来解析电子邮件,但在下面的部分中,for循环中有一些SyntaxError: def main(): writer = csv.DictWriter(open('features.csv', 'w'), list(EXTRACTS.keys())) for mail in os.listdir(MAILDIR): writer.writerow({ key: value(email.message_from_
SyntaxError
:
def main():
writer = csv.DictWriter(open('features.csv', 'w'), list(EXTRACTS.keys()))
for mail in os.listdir(MAILDIR):
writer.writerow({
key: value(email.message_from_file(open(os.path.join(MAILDIR, mail), 'r')))
for key, value in EXTRACTS.items()
})
请帮我摆脱这一切
编辑:
文件“/IS/extraction.py”,第52行
您正在一个还不支持dict理解的较旧的Python版本上运行它。
{key:value for…in…}
语法仅在Python 2.7及更新版本中可用:
Python 2.6.8 (unknown, May 22 2013, 11:58:55)
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> def main():
... writer = csv.DictWriter(open('features.csv', 'w'), list(EXTRACTS.keys()))
... for mail in os.listdir(MAILDIR):
... writer.writerow({
... key: value(email.message_from_file(open(os.path.join(MAILDIR, mail), 'r')))
... for key, value in EXTRACTS.items()
File "<stdin>", line 6
for key, value in EXTRACTS.items()
^
SyntaxError: invalid syntax
但是,您确实希望避免阅读摘录
中每个关键项对的电子邮件;每个外部循环读取一次:
def main():
writer = csv.DictWriter(open('features.csv', 'w'), list(EXTRACTS.keys()))
for mail in os.listdir(MAILDIR):
mail = email.message_from_file(open(os.path.join(MAILDIR, mail), 'r'))
writer.writerow(dict((key, value(mail)) for key, value in EXTRACTS.items()))
value(来自文件的email.message(open(os.path.join(MAILDIR,mail),'r'))
看起来不正确。你想做什么?@karthikr:如果摘录
字典中的值是可调用的,那就好了。为了将来参考,请包含你的异常的完整回溯,以便我们更容易诊断你的问题。在这一行中,脚本应该读取所有邮件(在MAILDIR中找到)并获取我们必须检查的值(例如发件人、IP、主题等)
writer.writerow(dict(
(key, value(email.message_from_file(open(os.path.join(MAILDIR, mail), 'r'))))
for key, value in EXTRACTS.items()
))
def main():
writer = csv.DictWriter(open('features.csv', 'w'), list(EXTRACTS.keys()))
for mail in os.listdir(MAILDIR):
mail = email.message_from_file(open(os.path.join(MAILDIR, mail), 'r'))
writer.writerow(dict((key, value(mail)) for key, value in EXTRACTS.items()))