Python "SyntaxError: не-ASCII-символ '\ xe2' в файле"
Я пишу код python, и я получаю сообщение об ошибке, как в заголовке, от поиска это связано с набором символов.
Вот строка, которая вызывает ошибку
hc = HealthCheck("instance_health", interval=15, target808="HTTP:8080/index.html")
Я не могу понять, какого персонажа нет в наборе ANSI ASCII? Кроме того, поиск "\ xe2" больше не дает информации о том, какой символ появляется. Какой символ в этой строке вызывает проблему?
Я также видел несколько исправлений для этой проблемы, но я не уверен, что использовать. Может ли кто-нибудь уточнить, в чем проблема (python не интерпретирует unicode, если не сказано об этом?), И как я правильно его очищу?
EDIT:
Вот все строки рядом с тем, что ошибки
def createLoadBalancer():
conn = ELBConnection(creds.awsAccessKey, creds.awsSecretKey)
hc = HealthCheck("instance_health", interval=15, target808="HTTP:8080/index.html")
lb = conn.create_load_balancer('my_lb', ['us-east-1a', 'us-east-1b'],[(80, 8080, 'http'), (443, 8443, 'tcp')])
lb.configure_health_check(hc)
return lb
Ответы
Ответ 1
У вас есть байонетный байт. Вы можете найти его, запустив
with open("x.py") as fp:
for i, line in enumerate(fp):
if "\xe2" in line:
print i, repr(line)
где вы должны заменить "x.py"
на имя вашей программы. Вы увидите номер строки и строку (-и) нарушения. Например, после произвольного вставки этого байта я получил:
4 "\xe2 lb = conn.create_load_balancer('my_lb', ['us-east-1a', 'us-east-1b'],[(80, 8080, 'http'), (443, 8443, 'tcp')])\n"
Ответ 2
Если вы просто пытаетесь использовать символы UTF-8 или не заботитесь о том, находятся ли они в вашем коде, добавьте эту строку в начало вашего файла .py
# -*- coding: utf-8 -*-
Ответ 3
Или вы просто можете использовать:
# coding: utf-8
в верхней части файла .py
Ответ 4
Измените кодировку символа файла,
всегда ставьте ниже строки в начало вашего кода
# -*- coding: utf-8 -*-
Ответ 5
\ xe2 является символом '-', он появляется в некотором копировании и вставке, он использует другой равный внешний вид -, который вызывает ошибки в кодировке.
Замените "-" (от скопирования) с помощью правильной "-" (с клавиатуры).
Ответ 6
У меня была такая же ошибка при копировании и вставке комментария из Интернета
Для меня это была единственная цитата (') в слове
Я просто удалил его и снова набрал.
Ответ 7
Я получил эту ошибку для символов в своих комментариях (от копирования/вставки содержимого из Интернета в мой редактор для целей заметок).
Чтобы разрешить в текстовом Wrangler:
- Выделите текст
- Перейдите в меню "Текст"
- Выберите "Преобразовать в ASCII"
Ответ 8
На основе PEP 0263 - Определение кодов исходного кода Python
Python will default to ASCII as standard encoding if no other
encoding hints are given.
To define a source code encoding, a magic comment must
be placed into the source files either as first or second
line in the file, such as:
# coding=<encoding name>
or (using formats recognized by popular editors)
#!/usr/bin/python
# -*- coding: <encoding name> -*-
or
#!/usr/bin/python
# vim: set fileencoding=<encoding name> :
Ответ 9
Примерно через полчаса рассмотрения, мне стало ясно, что если использование комментария в комментарии будет проходить через ошибку:
SyntaxError: Non-ASCII character '\xe2' in file
После просмотра трассировки я смог найти единственную цитату, использованную в моем комментарии.
Ответ 10
Добавление строки # coding = utf-8 в первую строку вашего файла .py решит проблему.
Пожалуйста, прочитайте больше о проблеме и ее решении по ссылке ниже, в этой статье проблема и ее решение красиво описаны: https://www.python.org/dev/peps/pep-0263/
Ответ 11
У меня была эта точная проблема с простым кодом .py ниже:
import sys
print 'version is:', sys.version
Приведенный выше код DSM предоставил следующее:
1 'print\xe2\x80\x98version -\xe2\x80\x99, sys.version'
Итак, проблема заключалась в том, что мой текстовый редактор использовал SMART QUOTES, как предложил Джон Я. После изменения настроек текстового редактора и повторного открытия/сохранения файла он отлично работает.
Ответ 12
Я пытаюсь разобрать эти странные окна apostraphe, и после нескольких попыток здесь есть фрагмент кода, который работает.
def convert_freaking_apostrophe(self,string):
try:
issuer_rename = string.decode('windows-1252')
except:
issuer_rename = string.decode('latin-1')
issuer_rename = issuer_rename.replace(u'’', u"'")
issuer_rename = issuer_rename.encode('ascii','ignore')
try:
os.rename(directory+"/"+issuer,directory+"/"+issuer_rename)
print "Successfully renamed "+issuer+" to "+issuer_rename
return issuer_rename
except:
pass
#HANDLING FOR FUNKY APOSTRAPHE
if re.search(r"([\x90-\xff])", issuer):
issuer = self.convert_freaking_apostrophe(issuer)
Ответ 13
Если это кому-нибудь поможет, для меня это произошло потому, что я пытался запустить реализацию Django в python 3.4 с моей командой python 2.7
Ответ 14
У меня была та же проблема, но это было потому, что я скопировал и вставил строку как есть. Позже, когда я вручную набрал строку, так как ошибка исчезла.
У меня была ошибка из - за -
знак. Когда я заменил его на ручной ввод -
ошибка была решена.
Скопированная строка 10 + 3 * 5/(16 − 4)
Вводимая вручную строка 10 + 3 * 5/(16 - 4)
Вы можете ясно видеть, что между дефисами есть небольшая разница.
Я думаю, это из-за разного форматирования, используемого в разных ОС или, может быть, просто в другом программном обеспечении.
Ответ 15
Для меня проблема возникла из-за "" этого символа в кавычках. Поскольку я скопировал код из файла PDF, это вызвало эту ошибку. Я просто заменил "" этим "".
Ответ 16
Если вы хотите определить, какой символ вызвал это, просто назначьте проблемную переменную строке и напечатайте ее в консоли iPython.
В моем случае
In [1]: array = [[24.9, 50.5], [11.2, 51.0]] # Raises an error
In [2]: string = "[[24.9, 50.5], [11.2, 51.0]]" # Manually paste the above array here
In [3]: string
Out [3]: '[[24.9, 50.5]\xe2\x80\x8b, [11.2, 51.0]]' # Here they are!
Ответ 17
для меня проблема была вызвана тем, что я набрал код в Mac Notes, а затем скопировал его из Mac Notes и вставил в мой сеанс vim для создания моего файла. Это сделало мои одинарные кавычки изогнутым шрифтом. чтобы исправить это, я открыл свой файл в vim и заменил все мои изогнутые одинарные кавычки на прямой, просто удалив и повторно напечатав один и тот же символ. Именно Mac Notes сделал тот же самый ход клавиш, чтобы получить изогнутую одинарную кавычку.
Ответ 18
У меня была такая же проблема, и я просто добавил ее в начало моего файла (в Python 3 у меня не было проблемы, но я сделал в Python 2
#!/usr/local/bin/python
# coding: latin-1
Ответ 19
Когда у меня есть аналогичная проблема при чтении текстовых файлов, я использую...
f = open('file','rt', errors='ignore')
Ответ 20
Скопируйте и вставьте в TXT файл и сохраните. Дополнительный байт покажет как ??
в вашем файле.
Удалите их, сохраните в новый файл .py.
Ответ 21
У меня было такое же решение проблемы просто.
если вы скопировали что-то из Интернета, если есть такие символы, как (,,), просто замените их на клавиатурные клавиши. Проблема будет решена.