Apakah ada Perpustakaan Python yang berisi daftar semua karakter ascii?


98

Sesuatu seperti di bawah ini:

import ascii

print ascii.charlist()

Yang akan menghasilkan sesuatu seperti [A, B, C, D ...]

Jawaban:


163

The stringkonstanta mungkin apa yang Anda inginkan. ( dokumen )

>>> impor string
>>> string.ascii_uppercase
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

Jika Anda ingin semua karakter yang dapat dicetak:

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

3
Menurut saya agak membingungkan, ASCII bukan dari asampai ztapi dari 0 sampai 127 kode, itu bukan hanya huruf.
Andrey

4
string.ascii_lettersadalah seluruh shebang!
jathanism

1
@jathanism - Atau hanya string.letters... string.printablelebih dekat (tetapi tidak sama) dengan apa yang dimaksud @Andrey.
Joe Kington

Saya kira itu tergantung pada apakah OP benar-benar membutuhkan setiap karakter. string.printablememberikan semua karakter yang dapat dicetak.
Acorn

judul pertanyaannya jelas (dan mengacu pada keseluruhan set ASCII) tetapi dalam contoh sepertinya OP benar-benar menginginkan huruf.
Andrey

32

Ini dia:

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

Mengingat bahwa Stringmodul sudah tidak digunakan lagi, ini adalah jawaban terbaik
Devon M

1
@ChuckFulminata, stringmodul ini tidak digunakan lagi. Lihat ini , misalnya.
dkasak

@dkasak Keren terima kasih, saya lupa, stringmodulnya hanya sebagian tidak digunakan lagi
Devon M

1
Ingat juga bahwa di Python 3 Anda harus memanggil range(127), karena rangetelah dihapus dan xrangedinamai ulang. Juga, untuk mendapatkan karakter Unicode dalam Python 2 Anda harus memanggil unichr(i)tetapi dengan Python 3 cukupchr(i)
Benj

1
Bukankah seharusnya jarak (128) untuk 0-127?
Anadactothe

14

ASCII mendefinisikan 128 karakter yang nilai byte-nya berkisar dari 0 hingga 127 inklusif. Jadi untuk mendapatkan string dari semua karakter ASCII, Anda bisa melakukannya

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

Hanya beberapa di antaranya yang dapat dicetak, namun- karakter ASCII yang dapat dicetak dapat diakses dengan Python melalui

import string
string.printable

4

Karena karakter ASCII yang dapat dicetak adalah daftar yang cukup kecil (byte dengan nilai antara 32 dan 127), itu cukup mudah untuk dibuat saat Anda membutuhkan:

>>> 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)

Coba ini!


ASCII akan range(0, 128).
dan04

@ dan04 @lucemia ASCII dari 0 hingga 127 , kode diperpanjang hingga 255
Andrey

3
@Andrey: ASCII adalah dari 0 hingga 127, jadi rentang (0, 128) dengan Python. (Kesalahan umum dalam beberapa jawaban lain ...)
jtniehof

1

Anda dapat melakukan ini tanpa modul:

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

Ketik charactersdan itu harus dicetak ["a","b","c", ... ,"x","y","z"]. Untuk penggunaan huruf besar:

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

Rentang apa pun (termasuk penggunaan langkah rentang) dapat digunakan untuk ini, karena menggunakan Unicode. Oleh karena itu, tambah range()untuk menambahkan lebih banyak karakter ke daftar.
map()memanggil chr()setiap iterasi range().


-7

Tidak, tidak ada, tetapi Anda dapat membuatnya dengan mudah:

    #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
Tiga tahun setelah jawaban yang diterima dengan jelas menyebutkan string.printable, Anda mengklaim "tidak, tidak ada"?
Tobias Kienzler
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.