【问题标题】:SyntaxError when using literal string interpolation or f-strings使用文字字符串插值或 f 字符串时出现 SyntaxError
【发布时间】:2019-07-05 13:05:12
【问题描述】:

尝试读取 csv 文件并打印内容:

with open('C:\test.csv') as csvfile:
    csv_reader = csv.reader(csvfile, delimiter=',')
    line_count = 0
    for row in csv_reader:
        if line_count == 0:
            print(f'Column names are {", ".join(row[0])}')
            line_count += 1
        else:
            print(f'\t{row[0]} works in the {row[1]} department in {row[2]}.')

我收到以下错误:

SyntaxError: invalid syntax
PS C:\users\XXX\documents\python> python ReadCSV.py
  File "ReadCSV.py", line 12
    print(f'Column names are {", ".join(row[0])}')
                                            ^
SyntaxError: invalid syntax

【问题讨论】:

  • 你的 Python 版本是多少? python -Vpython3 -V 的输出是什么?
  • 你的意思是...join(row)

标签: python python-3.x syntax-error f-string


【解决方案1】:

文字字符串插值或“f-strings”仅在 Python3.6 中引入。
看: https://www.python.org/dev/peps/pep-0498/

您的代码在 Python3.6 上运行良好。
如果您使用的不是 Python3.6(及更高版本),则会出现语法错误。

$ python3.6 -V
Python 3.6.7
$ python3.6 readcsv.py 
Column names are c, o, l, 1
        1 works in the 2 department in 3.
        4 works in the 5 department in 6.

$ python3 -V
Python 3.5.2
$ python3 readcsv.py 
  File "readcsv.py", line 9
    print(f'Column names are {", ".join(row[0])}')
                                                ^
SyntaxError: invalid syntax

$ python -V
Python 2.7.12
$ python readcsv.py 
  File "readcsv.py", line 9
    print(f'Column names are {", ".join(row[0])}')
                                                ^
SyntaxError: invalid syntax

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-28
    • 1970-01-01
    • 2020-02-02
    • 2021-04-23
    • 2020-05-24
    • 1970-01-01
    • 2020-02-28
    相关资源
    最近更新 更多