[python] 문자의 ASCII 값을 얻는 방법

어떻게받을 수 있나요 ASCII의 int로서 문자의 값을 int파이썬 합니까?



답변

에서 여기 :

ord () 함수는 char의 int 값을 얻습니다. 그리고 숫자로 재생 한 후 다시 변환하려면 함수 chr ()이 트릭을 수행합니다.

>>> ord('a')
97
>>> chr(97)
'a'
>>> chr(ord('a') + 3)
'd'
>>>

Python 2에는 서 수가 인수 인 유니 코드 문자를 unichr반환하는 함수 도 있습니다 .unichr

>>> unichr(97)
u'a'
>>> unichr(1234)
u'\u04d2'

파이썬 3에서는 chr대신 사용할 수 있습니다 unichr.


ord ()-Python 3.6.5rc1 문서

ord ()-Python 2.7.14 문서


답변

ord()당신에게 그 자체로 ASCII 값을 제공하지 않습니다; 어떤 인코딩이든 문자의 숫자 값을 제공합니다. 따라서 ord('ä')Latin-1을 사용하는 경우 결과는 228이 될 수 있고 TypeErrorUTF-8을 사용 하는 경우 에는 결과가 발생할 수 있습니다 . 유니 코드를 전달하면 유니 코드 코드 포인트를 대신 반환 할 수도 있습니다.

>>> ord(u'あ')
12354


답변

당신이 찾고있는:

ord()


답변

허용되는 대답은 정확하지만 전체 ASCII 문자를 한 번에 ASCII 코드로 변환해야하는 경우 더 영리하고 효율적인 방법이 있습니다. 대신에 :

for ch in mystr:
    code = ord(ch)

또는 약간 더 빠릅니다.

for code in map(ord, mystr):

코드를 직접 반복하는 Python 기본 유형으로 변환합니다. 파이썬 3에서는 사소합니다.

for code in mystr.encode('ascii'):

파이썬 2.6 / 2.7에서는 Py3 스타일 bytes객체 가 없기 때문에 약간 더 관련 bytesstr있지만 문자별로 반복되는 별칭입니다 bytearray.

# If mystr is definitely str, not unicode
for code in bytearray(mystr):

# If mystr could be either str or unicode
for code in bytearray(mystr, 'ascii'):

서수에 의해 기본적으로 반복되는 유형으로 인코딩하면 변환이 훨씬 빨라집니다. Py2.7 및 Py3.5 모두 로컬 테스트, A는 반복에서 str의 ASCII 코드를 사용하여 얻을 map(ord, mystr)A의 두 배 정도 오래 걸리는 떨어져 시작 len10 str사용하는 것보다 bytearray(mystr)Py2 또는 mystr.encode('ascii')Py3에와 같이 str더 이상 얻을, 승수는 지불 map(ord, mystr)상승 ~ 6.5x-7x까지

유일한 단점은 전환이 한 번에 이루어지기 때문에 첫 번째 결과가 조금 더 오래 걸릴 수 있으며 실제로 엄청난 str양의 일시적인 bytes/ bytearray가있을 수 있지만 이것이 페이지 스레 싱을 강요하지 않는 한, 이것은 중요하지 않습니다 .


답변

문자의 ASCII 코드를 얻으려면 ord()함수를 사용할 수 있습니다 .

예제 코드는 다음과 같습니다.

value = input("Your value here: ")
list=[ord(ch) for ch in value]
print(list)

산출:

Your value here: qwerty
[113, 119, 101, 114, 116, 121]


답변