Чи існує бібліотека Python, яка містить список усіх символів ascii?


Відповіді:


162

Ці stringконстанти можуть бути то , що ви хочете. ( документи )

>>> рядок імпорту
>>> string.ascii_uppercase
'А Б В Г Г Д Е Є Ж З И І Ї Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ ЬЮ Я'

Якщо вам потрібні всі друковані символи:

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

3
Я думаю, це трохи заплутано, ASCII - це не від aдо, zа від 0 до 127 кодів, це не тільки літери.
Андрій

4
string.ascii_lettersце цілий шебанг!
ятанізм

1
@jathanism - Або просто string.letters... string.printableближче (але не те саме) до того, на що мав на увазі @Andrey.
Джо Кінгтон,

Я припускаю, що це залежить від того, чи дійсно OP потребує кожного окремого символу. string.printableдає всі символи для друку.
Жолудь

заголовок питання зрозумілий (і він стосується цілого набору ASCII), але в прикладі схоже, що OP дійсно хоче листи.
Андрій

32

Ось:

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

Враховуючи, що Stringмодуль застарілий, це найкраща відповідь
Девон М,

@ChuckFulminata, stringмодуль не застарів. Дивіться це , наприклад.
dkasak

@dkasak Класно, дякую, я забув, stringмодуль застарілий лише частково
Devon M

1
Пам'ятайте також, що в Python 3 вам слід телефонувати range(127), оскільки його rangeбуло видалено та xrangeперейменовано. Крім того, щоб отримати символи Unicode в Python 2, вам слід зателефонувати, unichr(i)але в Python 3 простоchr(i)
Benj

1
чи не повинен це бути діапазон (128) для 0-127?
Анадактота

14

ASCII визначає 128 символів, значення байтів яких варіюються від 0 до 127 включно. Отже, щоб отримати рядок усіх символів 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

@ dan04 @lucemia ASCII від 0 до 127 , розширені коди до 255
Андрій

3
@Andrey: ASCII від 0 до 127, тому діапазон (0, 128) у Python. (Поширена помилка в кількох інших відповідях ...)
jtniehof

1

Ви можете зробити це без модуля:

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

Наберіть, charactersі його слід надрукувати ["a","b","c", ... ,"x","y","z"]. Для верхнього регістру:

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

Для цього може бути використаний будь-який діапазон (включаючи використання кроків діапазону), оскільки він використовує Unicode. Тому збільште, 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
Через три роки після чітко згаданої прийнятої відповідіstring.printable ви стверджуєте "ні, немає"?
Тобіас Кінцлер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.