символ степени в Python тройной строке - PullRequest
0 голосов
/ 22 января 2020

Похоже, что интерпретатор Python 3.7 не примет модуль, содержащий строки в тройных кавычках, содержащие специальные символы, такие как символ степени. (Я не хочу использовать кодировку для символа степени, потому что комментарии полезны для того, кто смотрит на код, который затем станет менее понятным). Есть ли способ обойти это?

1 Ответ

0 голосов
/ 29 февраля 2020

Эта проблема может быть воспроизведена, если файл Python неправильно закодирован с использованием 8-битной кодировки вместо UTF-8. Байт 0xb0 отображается в символ градуса во многих 8-битных кодировках, как можно видеть здесь .

Ошибка воспроизводится, если файл python закодирован как латинский. 1

iconv --from-code=utf-8 --to-code=latin1 special_char.py > latin_1_char.py
python3.7 latin_1_char.py 
  File "latin_1_char.py", line 4
    """
SyntaxError: (unicode error) 'utf-8' codec can't decode byte 0xb0 in position 145: invalid start byte

или как cp1252

iconv --from-code=utf-8 --to-code=cp1252 char.py > cp1252_char.py
(so38) kdwyer@osiris:~/p/so38  $ python3.7 cp1252_char.py 
  File "cp1252_char.py", line 4
    """
SyntaxError: (unicode error) 'utf-8' codec can't decode byte 0xb0 in position 145: invalid start byte

, но не в том случае, если файл закодирован как utf-8

iconv --from-code=latin1 --to-code=utf-8 latin_1_char.py > utf8_char.py
python3.7 utf8_char.py 
Hello!
...