Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.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
Python:SyntaxError_Python_Csv_Syntax Error - Fatal编程技术网

Python:SyntaxError

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_

我正在编写一个脚本来解析电子邮件,但在下面的部分中,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_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()))