はい、すべての作業を行うように辞書を設定できます。セットアップしたら、あなたは非常に迅速にそれを介してテキストの多くを実行できます。
import string
type_dictionary = dict()
type_dictionary.update({c: 'letter' for c in string.ascii_letters})
type_dictionary.update({c: 'number' for c in string.digits})
type_dictionary.update({c: 'operator' for c in {'*', '/', '+', '-', '='}})
string = "elif val == 3:"
for character in string:
print(character, "->", type_dictionary.get(character, 'other'))
OUTPUT
e -> letter
l -> letter
i -> letter
f -> letter
-> other
v -> letter
a -> letter
l -> letter
-> other
= -> operator
= -> operator
-> other
3 -> number
: -> other
は別のアプローチは、文字変換テーブルを使用することです:
import string
import itertools
type_dictionary = {'1': 'number', '2': 'letter', '3': 'operator', '4': 'other'}
maketrans_dictionary = dict({c: '4' for c in string.printable})
maketrans_dictionary.update({c: '2' for c in string.ascii_letters})
maketrans_dictionary.update({c: '1' for c in string.digits})
maketrans_dictionary.update({c: '3' for c in {'*', '/', '+', '-', '='}})
table = str.maketrans(maketrans_dictionary)
string = "elif val == 3:"
for character, character_type in zip(string, string.translate(table)):
print(character, "->", type_dictionary[character_type])
のどちら上記のコードはUnicodeに対応しており、追加作業は必要ありませんが、どちらも問題ありません。char in {'*', '/', '+', '-', '='}
です。
私はあなたが鍵を欲しいとは思っていません。これで何をしようとしていますか? – JETM
@ JETMおそらく、 'if'ステートメントの代わりに' char_type = d [char] 'のようなものでしょう。 –
正直、ちょうど関数でラップし、 'char_type(char)'を呼び出してください。 'char_type [char]'と比較して読みやすさの節約は全くありません。コードを読んだ人を混乱させるだけです。 –