Programing

Python "SyntaxError : 파일의 ASCII가 아닌 문자 '\ xe2'"

crosscheck 2020. 5. 31. 10:04
반응형

Python "SyntaxError : 파일의 ASCII가 아닌 문자 '\ xe2'"


파이썬 코드를 작성 중이며 제목에서와 같이 오류 메시지가 표시됩니다.이 문자 세트와 관련이 있습니다.

오류를 일으키는 줄은 다음과 같습니다.

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

ANSI ASCII 세트에없는 문자를 파악할 수 없습니까? 또한 "\ xe2"를 검색해도 어떤 문자가 나타나는지에 대한 정보가 더 이상 제공되지 않습니다. 그 줄의 어떤 문자가 문제를 일으키는가?

또한이 문제에 대한 몇 가지 수정 사항을 보았지만 사용할 것인지 확실하지 않습니다. 누군가 문제가 무엇인지 (파이썬은 유니 코드를 해석하지 않는 한 해석하지 않습니까?), 어떻게 올바르게 정리할 수 있습니까?

편집 : 여기에 오류가있는 모든 줄이 있습니다.

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

부유 바이트가 떠 다니고 있습니다. 당신은 그것을 실행하여 찾을 수 있습니다

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파일 맨 위에 추가 하십시오

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

또는 단순히 다음을 사용할 수 있습니다.

# coding: utf-8

.py 파일 맨 위에


\ xe2는 '-'문자이며 일부 사본에 나타나고 붙여 넣기에는 다르게 보이는 '-'를 사용하여 인코딩 오류가 발생합니다. '-'(복사 붙여 넣기에서)를 올바른 '-'(키보드 단추에서)로 바꾸십시오.


파일 문자 인코딩을 변경하십시오.

아래 코드를 항상 맨 위에 넣으십시오.

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

웹에서 의견을 복사하여 붙여 넣는 동안 동일한 오류가 발생했습니다.

나에게 그것은 단어에서 작은 따옴표 ( ')였습니다

방금 지워서 다시 입력했습니다.


.py 파일의 첫 줄에 # coding = utf-8 줄을 추가 하면 문제가 해결됩니다.

아래 기사 링크에서 문제 및 수정 사항에 대한 자세한 내용을 읽으십시오.이 기사의 문제에 대한 해결책은 아름답게 설명되어 있습니다 : https://www.python.org/dev/peps/pep-0263/


메모에 문자에 대한이 오류가 발생했습니다 (메모 작성을 위해 웹의 내용을 편집기에서 복사 / 붙여 넣기에서).

텍스트 랭글러에서 해결하려면 :

  1. 텍스트를 강조
  2. 텍스트 메뉴로 이동
  3. "ASCII로 변환"을 선택하십시오

PEP 0263 기반 -파이썬 소스 코드 인코딩 정의

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> :

약 30 분 동안 스택 오버플로를 살펴본 후 주석에 작은 따옴표 "" "를 사용하면 오류가 발생합니다.

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

After looking at the traceback i was able to locate the single quote used in my comment.


If it helps anybody, for me that happened because I was trying to run a Django implementation in python 3.4 with my python 2.7 command


I had this exact issue running the simple .py code below:

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

DSM's code above provided the following:

1 'print \xe2\x80\x98version is\xe2\x80\x99, sys.version'

So the issue was that my text editor used SMART QUOTES, as John Y suggested. After changing the text editor settings and re-opening/saving the file, it works just fine.


I am trying to parse that weird windows apostraphe and after trying several things here is the code snippet that works.

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)

I had the same issue but it was because I copied and pasted the string as it is. Later when I manually typed the string as it is the error vanished.

I had the error due to the - sign. When I replaced it with manually inputting a - the error was solved.

Copied string 10 + 3 * 5/(16 − 4)

Manually typed string 10 + 3 * 5/(16 - 4)

you can clearly see there is a bit of difference between both the hyphens.

I think it's because of the different formatting used by different OS or maybe just different software.


For me the problem had caused due to "’" that symbol in the quotes. As i had copied the code from a pdf file it caused that error. I just replaced "’" by this "'".


If you want to spot what character caused this just assign the problematic variable to a string and print it in a iPython console.

In my case

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!

for me, the problem was caused by typing my code into Mac Notes and then copied it from Mac Notes and pasted into my vim session to create my file. This made my single quotes the curved type. to fix it I opened my file in vim and replaced all my curved single quotes with the straight kind, just by removing and retyping the same character. It was Mac Notes that made the same key stroke produce the curved single quote.


I had the same issue and just added this to the top of my file (in Python 3 I didn't have the problem but do in Python 2

#!/usr/local/bin/python
# coding: latin-1

When I have a similar issue when reading text files i use...

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

참고URL : https://stackoverflow.com/questions/21639275/python-syntaxerror-non-ascii-character-xe2-in-file

반응형