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.