Python에서 ASCII를 아닌 캐릭터를 보여주는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/910809

  •  06-09-2019
  •  | 
  •  

문제

이런 식으로 파이썬 쉘을 사용하고 있습니다.

>>> s = 'Ã'
>>> s
'\xc3'

문자를 보여주기 위해 S 변수를 어떻게 인쇄 할 수 있습니까 ??? 이것은 첫 번째이고 가장 쉬운 질문입니다. 실제로, 나는 이전과 같은 ASCII 문자가없는 웹 페이지에서 컨텐츠를 얻고 있습니다. 그리고 á, é, í, ñ 등과 같은 tilde와 같은 다른 사람들이있는 다른 문자가 있습니다. 웹 페이지의 내용에 대한 패턴 표현.

이 문제를 어떻게 해결할 수 있습니까?

이것은 하나의 성과의 예입니다.

u'<td[^>]*>\s*Definición\s*</td><td class="value"[^>]*>\s*(?P<data>[\w ,-:\.\(\)]+)\s*</td>'

Expresson 애플리케이션을 사용하는 경우 제대로 작동합니다.

편집 [05/26/2009 16:38] : 내 설명에 대해 죄송합니다. 나는 더 잘 설명하려고 노력할 것이다.

페이지에서 텍스트를 가져와야합니다. 나는 그 페이지의 URL이 있고 그 텍스트를 얻을 수있는 regex가 있습니다. 내가 가장 먼저 생각한 것은 정규식이 잘못되었다는 것입니다. 나는 그것을 Expresso로 확인하고 잘 작동합니다. 내가 원하는 텍스트를 얻었습니다. 그래서 두 번째로 생각한 것은 페이지의 내용을 인쇄하는 것이었고, 그 내용이 웹 페이지의 소스 코드에서 볼 수있는 내용이 아니라는 것을 알았을 때였습니다. 차이점은 Á, é, É 등과 같은 비 ASCII 문자입니다. 이제 내가해야 할 일을 모르고 문제가 페이지 내용의 인코딩 또는 Regex의 패턴 텍스트에 있는지 모릅니다. 내가 정의한 정규식 중 하나는 이전 것입니다.

질문은 다음과 같습니다. 어떤 패턴 텍스트가 ASCII 문자가 아닌 패턴 텍스트를 사용하는 데 문제가 있습니까 ???

도움이 되었습니까?

해결책

UTF-8으로 인쇄하고 싶다고 가정 해 봅시다. Python 3 이전에는 가장 좋은 점은 구체적으로 인코딩하는 것입니다.

print u'Ã'.encode('utf-8')

텍스트를 외부로 가져 오면 다음과 같은 다음과 같이 특별히 디코딩해야합니다.

f = open(my_file)
a = f.next().decode('utf-8') # you have a unicode line in a
print a.encode('utf-8') 

다른 팁

문자를 보여주기 위해 S 변수를 어떻게 인쇄 할 수 있습니까 ???
사용 print:

>>> s = 'Ã'
>>> s
'\xc3'
>>> print s
Ã

나는 사용할 것이다 ord() 캐릭터가 ASCII/Special인지 확인하기 위해 :

if ord(c) > 127:
    # special character

이것은 아마도 UTF-8과 같은 멀티 바이트 인코딩에서는 작동하지 않을 것입니다. 이 경우 테스트하기 전에 유니 코드로 변환합니다.

웹 페이지에서 특수 문자를 얻으면 인코딩을 알아야합니다. 그런 다음 해독하고 참조하십시오 유니 코드 howto.

편집 :이 질문이 무엇인지 확실하지 않습니다 ... 그것을 명확히하는 것이 좋습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top