Python "SyntaxError: Non-ASCII символ' xe2 ' в файле"



Я пишу некоторый код python, и я получаю сообщение об ошибке, как в заголовке, от поиска это связано с набором символов.



вот строка, которая вызывает ошибку



hc = HealthCheck("instance_health", interval=15, target808="HTTP:8080/index.html")


Я не могу понять, какой символ не находится в наборе ANSI ASCII? Кроме того, поиск "xe2 " больше не дает информации о том, какой символ появляется. Какой символ в этой строке вызывает проблему?



Я также видел несколько исправлений для этого вопроса, но я не уверен, что использовать. Может ли кто-нибудь прояснить, в чем проблема (python не интерпретирует unicode, если не сказал об этом?), и как бы его правильно?



изменить:
Вот все строки рядом с той, что ошибки



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
535   18  

18 ответов:

у вас есть блуждающий байт, плавающий вокруг. Вы можете найти его выполняющимся

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"

Если вы просто пытаетесь использовать символы UTF-8 или не заботитесь о том, находятся ли они в вашем коде, добавьте эту строку в верхнюю часть вашего .py file

# -*- coding: utf-8 -*-

или вы могли бы просто использовать:

# coding: utf-8

в верхней части файла. py

изменить кодировку символов файла,

положите ниже строки в верхней части кода всегда

# -*- coding: utf-8 -*-

\xe2-это символ" -", он появляется в некоторых копиях и вставках, он использует другой равный вид" -", который вызывает ошибки кодирования. Заменить '-'(с копировать вставить) с правильным '-' (с вы кнопки клавиатуры).

У меня была такая же ошибка при копировании и вставке в комментарий из интернета

для меня это была одиночная кавычка (') в слове

Я просто стер его и перепечатал.

Я получил эту ошибку для символов в моих комментариях (от копирования/вставки контента из интернета в мой редактор для заметок).

чтобы разрешить в тексте Wrangler:

  1. выделение текста
  2. перейти в текстовое меню
  3. выберите "конвертировать в ASCII"

на основе 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> :

примерно через полчаса просмотра Stack overflow, мне пришло в голову, что если использование одной кавычки "'" в комментарии будет через ошибку:

SyntaxError: Non-ASCII character '\xe2' in file

после просмотра трассировки я смог найти единственную цитату, используемую в моем комментарии.

У меня была эта точная проблема с запуском простого кода. py ниже:

import sys
print 'version is:', sys.version

код DSM выше предоставил следующее:

1 'принт \XE2 в\Х80\x98version является\XE2 в\Х80\X99, в представлении sys.версия'

Итак, проблема заключалась в том, что мой текстовый редактор использовал умные кавычки, как предложил Джон Y. После изменения параметров текстового редактора и повторного открытия/сохранения файла, он работает просто отлично.

Я пытаюсь разобрать этот странный Апостроф windows, и после попытки нескольких вещей здесь есть фрагмент кода, который работает.

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)

Если это кому-то поможет, для меня это произошло, потому что я пытался запустить реализацию Django в python 3.4 с моей командой python 2.7

у меня была та же проблема, но это потому, что я скопировал и вставил в строку, как это. Позже, когда я вручную набрал строку, как это ошибка исчезла.

у меня была ошибка из-за - знак. Когда я заменил его на ввод вручную - ошибка была решена.

скопировал строку 10 + 3 * 5/(16 − 4)

вручную набранная строка 10 + 3 * 5/(16 - 4)

вы можете ясно видеть, есть немного разница между тире.

Я думаю, что это из-за различного форматирования, используемого различными ОС или, может быть, просто другое программное обеспечение.

для меня проблема была вызвана из-за "’" этого символа в кавычках. Поскольку я скопировал код из pdf-файла, это вызвало эту ошибку. Я просто заменил " ’ "на это"'".

Если вы хотите определить, какой символ вызвал это, просто назначьте проблемную переменную строке и распечатайте ее в консоли 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!

для меня проблема была вызвана вводом моего кода в Mac Notes, а затем скопировала его из Mac Notes и вставила в мой сеанс vim для создания моего файла. Это сделало мои одинарные кавычки изогнутым типом. чтобы исправить это, я открыл свой файл в vim и заменил все мои изогнутые одинарные кавычки прямым видом, просто удалив и перепечатав один и тот же символ. Это были заметки Mac, которые заставили тот же самый ключевой ход произвести изогнутую одинарную кавычку.

когда у меня похожая проблема при чтении текстовых файлов, которые я использую...

f = open('file','rt', errors='ignore')

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

Comments

    Ничего не найдено.