Python:语法

2024-05-14 12:52:22 发布

您现在位置:Python中文网/ 问答频道 /正文

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

请帮我脱身!在

编辑:

File "/IS/extraction.py", line 52

for key, value in EXTRACTS.items()
  ^ SyntaxError: invalid syntax

Tags: csvkeyin脚本forvalueos电子邮件
1条回答
网友
1楼 · 发布于 2024-05-14 12:52:22

您正在一个不支持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

将该行替换为字典构造函数和生成器表达式:

^{pr2}$

但是,您确实希望避免阅读EXTRACTS中每个密钥项对的电子邮件;每个外部循环都要阅读一次

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()))

相关问题 更多 >

    热门问题