Есть ли библиотека Python, содержащая список всех символов ascii?


Ответы:


163

Эти stringконстанты могут быть то , что вы хотите. ( документы )

>>> строка импорта
>>> string.ascii_uppercase
'АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЫЭЮЯ'

Если вам нужны все печатные символы:

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

3
Я думаю, это немного сбивает с толку, ASCII - это не от aдо, zа от 0 до 127 кодов, то есть не только буквы.
Андрей

4
string.ascii_lettersэто весь шебанг!
джатанизм 05

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

Я полагаю, это зависит от того, действительно ли OP нужен каждый символ. string.printableдает все печатные символы.
Acorn

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

32

Вот:

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

Учитывая, что Stringмодуль устарел, это лучший ответ
Devon M

1
@ChuckFulminata, stringмодуль не является устаревшим. См это , например.
dkasak 01

@dkasak Круто, спасибо, забыл, stringмодуль устарел только частично
Devon M

1
Помните также, что в Python 3 вы должны вызывать range(127), поскольку он rangeбыл удален и xrangeпереименован. Кроме того, чтобы получить символы Unicode в Python 2, вы должны просто позвонить, unichr(i)но в Python 3chr(i)
Бендж

1
Разве это не должно быть диапазона (128) для 0-127?
Anadactothe

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 05

@ 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.