모든 ASCII 문자 목록을 포함하는 Python 라이브러리가 있습니까?


98

아래와 같은 것 :

import ascii

print ascii.charlist()

[A, B, C, D ...]와 같은 결과를 반환합니다.

답변:


163

string상수는 당신이 원하는 것을 할 수있다. ( 문서 )

>>> 문자열 가져 오기
>>> string.ascii_uppercase
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

인쇄 가능한 모든 문자를 원하는 경우 :

>>> string.printable
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ! "# $ % & \'() * +,-. / :;? @ [\\] ^ _`{|} ~ \ t \ n \ r \ x0b \ x0c '

3
나는 그것이 약간 혼란 스럽다고 생각합니다. ASCII는-에서 az아니라 0에서 127 코드, 즉 문자가 아닙니다.
Andrey

4
string.ascii_letters전체 shebang입니다!
jathanism

1
@jathanism-아니면 string.letters... string.printable@ Andrey가 언급 한 것에 더 가깝지만 동일하지는 않습니다.
Joe Kington

OP에 실제로 모든 단일 문자가 필요한지 여부에 달려 있다고 생각합니다. string.printable인쇄 가능한 모든 문자를 제공합니다.
Acorn

질문의 제목은 명확하지만 (전체 ASCII 집합을 참조 함) 예를 들어 OP가 실제로 문자를 원하는 것처럼 보입니다.
Andrey

32

여기있어:

[chr(i) for i in xrange(127)]

String모듈이 더 이상 사용되지 않는다는 점을 감안할 때 이것이 가장 좋은 답변입니다
Devon M

1
@ChuckFulminata, string모듈은 더 이상 사용되지 않습니다. 예를 들어 이것을 참조하십시오 .
dkasak

@dkasak 쿨 감사합니다. 잊었습니다. string모듈은 부분적으로 만 사용되지 않습니다
Devon M

1
Python 3에서는을 호출해야합니다 . 제거되고 이름이 변경 range(127)되었기 때문 입니다. 또한 Python 2에서 유니 코드 문자를 얻으려면 Python 3에서 간단히 호출해야합니다.rangexrangeunichr(i)chr(i)
Benj

1
0-127의 범위 (128) 여야하지 않습니까?
Anadactothe

14

ASCII는 바이트 값 범위가 0에서 127까지 인 128자를 정의합니다. 따라서 모든 ASCII 문자의 문자열을 얻으려면 다음을 수행하면됩니다.

''.join([chr(i) for i in range(128)])

그중 일부만 인쇄 가능하지만 인쇄 가능한 ASCII 문자는 다음을 통해 Python에서 액세스 할 수 있습니다.

import string
string.printable

4

ASCII 인쇄 가능한 문자는 매우 작은 목록 (값이 32에서 127 사이 인 바이트)이므로 필요할 때 쉽게 생성 할 수 있습니다.

>>> for c in (chr(i) for i in range(32,127)):
...     print c
... 

!
"
#
$
%
... # a few lines removed :)
y
z
{
|
}
~

3
for i in range(0,128):
    print chr(i)

이 시도!


ASCII는 range(0, 128).
dan04 2011

@ dan04 @lucemia ASCII 0에서 127 , 확장 코드는 최대 255
Andrey

3
@Andrey : ASCII는 0에서 127까지이므로 Python에서는 range (0, 128)입니다. (다른 여러 답변의 일반적인 오류 ...)
jtniehof

1

모듈없이이 작업을 수행 할 수 있습니다.

    characters = list(map(chr, range(97,123)))

입력 characters하면 인쇄 ["a","b","c", ... ,"x","y","z"]됩니다. 대문자 사용 :

    characters=list(map(chr,range(65,91)))

유니 코드를 사용하기 때문에 모든 범위 (범위 단계 사용 포함)를 사용할 수 있습니다. 따라서 range()목록에 더 많은 문자를 추가 하려면 을 늘리십시오 .
map()chr()모든 반복을 호출 합니다 range().


-7

아니요, 없습니다.하지만 쉽게 만들 수 있습니다.

    #Your ascii.py program:
    def charlist(begin, end):
        charlist = []
        for i in range(begin, end):
            charlist.append(chr(i))
        return ''.join(charlist)

    #Python shell:
    #import ascii
    #print(ascii.charlist(50, 100))
    #Comes out as:

    #23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc

11
수락 된 답변 에서을 명확하게 언급 한 지 3 년 후 string.printable"아니요, 없습니다"라고 주장하십니까?
Tobias Kienzler
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.