문제

나는 몇 가지의 텍스트를 사용하는 유니코드 문장,왼쪽으로 좋아하는 따옴표,오른쪽 단일 위한 따옴표,아포스트로피와,그리고 나는 그것을 필요로 전송합니다.는 파이썬 있는 데이터베이스의 이러한 문자와 명백한 ASCII 대체 그래서 내가 잘 할 수 있는 것보다 그들을 돌로"?" ?

도움이 되었습니까?

해결책

Unidecode 완전한 솔루션처럼 보입니다. 그것은 멋진 따옴표를 ASCII 인용문으로 변환하고, 악센트가있는 라틴 캐릭터로 변환하고, ASCII와 동등한 캐릭터를 다루기 위해 음역을 시도합니다. 그렇게하면 사용자가 많은 것을 볼 필요가 없습니까? 레거시 7 비트 ASCII 시스템을 통해 텍스트를 전달해야 할 때.

>>> from unidecode import unidecode
>>> print unidecode(u"\u5317\u4EB0")
Bei Jing 

http://www.tablix.org/~avian/blog/archives/2009/01/unicode_transliteration_in_python/

다른 팁

에서 내 원 응답이,나 또한 제안 unicodedata.normalize.그러나 나는 그것을 테스트하기로 결정하고 그것을 밝혀 작동하지 않으로 유니코드로 큰따옴표로 묶여 있습니다.그것은 좋은 일을 번역하트 유니코드 문자,그래서 나 unicodedata.normalize 를 사용하여 구현됩 unicode.decomposition 기능,드 그것은 아마만을 처리할 수 있는 유니코드 문자 조합의 문자와 구별 부호 표시는,그러나 나는 정말 전문가에 유니코드 명세,그래서 나는 그냥 수의 전체 뜨거운 공기...

어떤 경우에도 사용할 수 있습니다 unicode.translate 을 다루는 문장 부호를 대신 합니다.이 translate 방법은 사전에 유니코드 서수하는 유니코드 서수,따라서을 만들 수 있습니다 매핑을 변환하는 유니코드만 문장을 ASCII-compatible 호:

'Maps left and right single and double quotation marks'
'into ASCII single and double quotation marks'
>>> punctuation = { 0x2018:0x27, 0x2019:0x27, 0x201C:0x22, 0x201D:0x22 }
>>> teststring = u'\u201Chello, world!\u201D'
>>> teststring.translate(punctuation).encode('ascii', 'ignore')
'"hello, world!"'

더 추가할 수 있습니다 문장 부호 매핑에 필요한 경우,그러나 나는 당신이 생각하지 않는 반드시 대해 걱정할 필요가 처리하는 모든 단일 유니코드 문자.는 경우 처리해야 하는 중심과 다른 구별 표시를 계속 사용할 수 있습니다 unicodedata.normalize 는 그들을 다루는 자입니다.

흥미로운 질문.

Google은 내가 찾는 데 도움이되었습니다 이 페이지 이를 사용하는 것 유니 코드 데타 모듈 다음과 같이 :

import unicodedata
unicodedata.normalize('NFKD', title).encode('ascii','ignore')

이에 대한 추가 논의가 있습니다 http://code.activestate.com/recipes/251871/ 여기에는 ± => +/- 및 기타 비 레스터 문자와 같은 것들에 대한 NFKD 솔루션과 변환 테이블을 수행하는 몇 가지 방법이 있습니다.

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