2019年11月2日

文字列 'ABC...Z' の作り方

Python においても、'A', 'B', 'C', ... 'Z' という文字列が欲しい場合があります。

文字型を持っている C言語であれば、以下のような書き方になると思います。

for (char c = 'A'; c <= 'Z'; c++) {
    printf("%c", c); // => A B C ... Z
}
Pythonでも同様の書き方は可能です。
for i in range(ord('A'), ord('Z') + 1):
    print(chr(i))  # => A B C ... Z



しかし、Python は文字型を持たない故、Python らしくない書き方です。より Pythonic な方法は無いものでしょうか?
これを解決するのが string モジュールです。

string モジュールには、よく使われると思われる制御文字列が定義されています。
'ABC...Z' の文字列も定義されています。

import string
print(string.ascii_uppercase)
# => ABCDEFGHIJKLMNOPQRSTUVWXYZ

for i in string.ascii_uppercase:
    print(i)  # => A B C ... Z


string には他にも以下の固定文字列が定義されています。なかなか気の利くモジュールですね。
>>> import string

>>> string.ascii_uppercase
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

>>> string.ascii_lowercase
'abcdefghijklmnopqrstuvwxyz'

>>> string.ascii_letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'

>>> string.digits
'0123456789'

>>> string.hexdigits
'0123456789abcdefABCDEF'

>>> string.octdigits
'01234567'

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

>>> string.punctuation
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'

>>> string.whitespace
' \t\n\r\x0b\x0c'

0 件のコメント:

コメントを投稿