2014-09-30 4 views
0

파이썬 2.7.6에서 문자열 묶음을 포맷하려고합니다. 유니 코드 기호가 나타날 때까지 모든 것이 올바르게 작동합니다..format() 및 유니 코드 문자열

a = 'ö' 
    b = 'd' 
    c = 'e' 

    print('{:2}{:2}{:2}').format(a, b, c) 

결과는 다음과 같습니다 : 이 짧은 예는 내 문제를 보여줍니다

OD 전자

그러나 그것은해야한다 :

ö 드

물건을 많이 봤어 인코딩, 디코딩, unicodedata.normalize,하지만 아무것도 작동하는 것. 누구나 내가 뭘 잘못하고 있는지 알 수 있습니까? 도움을 주셔서 감사 드리며 저의 영어 실력을 변명하십시오. Greetz,

+0

파이썬 3에서 문제가 될 것 같지 않습니다 긴 문자. – Kevin

+0

2.7.6에서 제대로 작동합니다. 괄호는 약간 이상하지만 구문을 실제로 변경하지는 않습니다. – jonrsharpe

+0

문자를 utf-8로 디코딩하면 len (a)의 길이가 1로 표시되지만 유니 코드 기호가 나타나면 코드에서이 코드를 사용하면 유니 코드 데 코드가 표시됩니다./ – BigZ

답변

1

BigZ이 당신을 위해 트릭을 할합니까?

>>> a = 'ö' 
>>> b = 'd' 
>>> c = 'e' 
>>> print(u'{:2}{:2}{:2}'.format(a.decode('utf8'), b, c)) 
ö d e 

귀하의 데이터가 utf8로 인코딩되었다고 가정합니다. 형식 문자열은 유니 코드입니다. 또한

이 내가이`렌 (A)`는 하나처럼 보이는에도 불구하고,이 사실 함께 할 수있는 뭔가가 내기

+0

아니, 죄송합니다. 이 예제에서는 잘 작동하지만 내 코드에서는 UnicodeDecode 예외를 throw합니다. :/ – BigZ

+0

@BigZ 인코딩 된 데이터를 바이트로 저장하고 파이썬이 무엇인지 알기를 원한다는 근본적인 문제가 있습니다. – Veedrac

+0

그래서 파이썬이 인코딩 된 데이터를 문자열로 저장하는 방법은 무엇입니까? – BigZ