SyntaxError при использовании интерполяции литеральных строк или f-строк - PullRequest
0 голосов
/ 12 февраля 2019

Попытка прочитать 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

1 Ответ

0 голосов
/ 12 февраля 2019

Интерполяция буквенных строк или «f-строк» ​​была введена только в Python3.6.
См .: https://www.python.org/dev/peps/pep-0498/

PEP498

ВашКод отлично работает на 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
...