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

У меня было такое же решение проблемы просто. если вы скопировали что-то из Интернета, если есть такие символы, как (,,), просто замените их на клавиатурные клавиши. Проблема будет решена.