Pythonでは、class, def, for, ifのように予約されている文字列があります。文字列が予約済みの文字列かどうか確認するための方法を解説します。
予約済み識別子か判定する ~keyword.iskeyword~
文字列は、isxxxxxという形のメソッドを使用することで文字の種類を判定することができます。
判定メソッドの中にはisidentifierというメソッドがありますが、このメソッドはPythonの識別子になるかどうかを判定することができるのみです。
文字列が予約済みの識別子(キーワード)かどうかを判定するためには、keywordモジュールのiskeywordを使用します。
iskeywordの使い方例は以下の通りです。
import keyword id_str1 = 'python' id_str2 = 'class' print(f'{id_str1}の判定') print(f'identifier: {id_str1.isidentifier()}') print(f'iskeyword: {keyword.iskeyword(id_str1)}') print(f'{id_str2}の判定') print(f'identifier: {id_str2.isidentifier()}') print(f'iskeyword: {keyword.iskeyword(id_str2)}')
【実行結果】 pythonの判定 identifier: True iskeyword: False classの判定 identifier: True iskeyword: True
iskeywordを用いるにはkeywordモジュールをimportする必要があります。
この例では、'python'、'class'という文字列に対して、identifierとiskeywordでそれぞれ判定を行っています。
'python'という文字列は識別子にできるのでidentifierはTrueですが、予約語ではないためiskeywordはFalseになります。一方、'class'は予約語であるため、iskeywordもTrueとなります。
以上のようにkeyword.iskeywordで文字列が予約済み識別子か判定することができます。
ソースコード
上記で紹介しているソースコードについてはgithubにて公開しています。参考にしていただければと思います。