문제

유니 코드 문자열 (£ $ 등과 같은 추가 문자 포함)을 Python 문자열로 어떻게 변환합니까?

도움이 되었습니까?

해결책

title = u"Klüft skräms inför på fédéral électoral große"
import unicodedata
unicodedata.normalize('NFKD', title).encode('ascii','ignore')
'Kluft skrams infor pa federal electoral groe'

다른 팁

ASCII가 아닌 문자를 번역 할 필요가없는 경우 ASCII에 ENCODE를 사용할 수 있습니다.

>>> a=u"aaaàçççñññ"
>>> type(a)
<type 'unicode'>
>>> a.encode('ascii','ignore')
'aaa'
>>> a.encode('ascii','replace')
'aaa???????'
>>>
>>> text=u'abcd'
>>> str(text)
'abcd'

문자열에 ASCII 문자 만 포함 된 경우.

유니 코드 문자열이 있고 파일 또는 기타 직렬화 된 양식 에이 글을 쓰고 싶다면 먼저 인코딩 저장할 수있는 특정 표현으로. UTF-16 (대부분의 유니 코드 문자에 대해 2 바이트를 사용) 또는 UTF-8 (문자에 따라 1-4 바이트 / 코드 포인트) 등과 같은 몇 가지 일반적인 유니 코드 인코딩이 있습니다. 사용할 수 있습니다 :

>>> s= u'£10'
>>> s.encode('utf8')
'\xc2\x9c10'
>>> s.encode('utf16')
'\xff\xfe\x9c\x001\x000\x00'

이 원시 바이트 문자열은 파일에 쓸 수 있습니다. 그러나 다시 읽을 때 인코딩이 무엇인지 알고 동일한 인코딩을 사용하여 해독해야합니다.

파일에 쓸 때 코덱 기준 치수. 따라서 모든 유니 코드 문자열을 인코딩하는 파일을 열려면 UTF-8, 사용:

import codecs
f = codecs.open('path/to/file.txt','w','utf8')
f.write(my_unicode_string)  # Stored on disk as UTF-8

이 파일을 사용하는 다른 것은 파일을 인코딩하는 것이 무엇인지 이해해야합니다. 당신이 읽기/쓰기를하는 유일한 사람이라면 이것은 문제가되지 않습니다. 그렇지 않으면 다른 파일을 사용하는 것이 이해할 수있는 양식으로 작성해야합니다.

Python 3에서는이 형태의 파일 액세스가 기본이며 내장 된 것입니다. open 함수는 인코딩 매개 변수를 가져 오며 텍스트 모드로 열린 파일의 경우 항상 유니 코드 문자열 (Python 3의 기본 문자열 객체)으로/로 변환됩니다.

예는 다음과 같습니다.

>>> u = u'€€€'
>>> s = u.encode('utf8')
>>> s
'\xe2\x82\xac\xe2\x82\xac\xe2\x82\xac'

글쎄, 당신이 Python 3으로 전환 할 의향이 있다면 (일부 Python 2 코드와 비교할 수 없기 때문에) 변환 할 필요는 없습니다. Python 3의 모든 텍스트는 유니 코드 문자열로 표시되며, 이는 또한 더 이상 사용되지 않음을 의미합니다. u'<text>' 통사론. 또한 데이터를 나타내는 데 사용되는 바이트 문자열도 있습니다 (인코딩 된 문자열 일 수 있음).

http://docs.python.org/3.1/whatsnew/3.0.html#text-vs-data-instead-of-unicode-vs-8-bit

(물론 현재 Python 3을 사용하고 있다면 텍스트를 파일에 저장하려고하는 방법과 관련된 문제가있을 수 있습니다.)

다음은 예제 코드입니다

import unicodedata    
raw_text = u"here $%6757 dfgdfg"
convert_text = unicodedata.normalize('NFKD', raw_text).encode('ascii','ignore')
import json, ast
jdata = ast.literal_eval(json.dumps(jdata)) # Removing uni-code chars
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top