Python文字列から英数字以外の文字を削除する
この投稿では、Pythonで文字列から英数字以外の文字を削除する方法について説明します。
1.正規表現を使用する
簡単な解決策は、文字列から英数字以外の文字を削除するために正規表現を使用することです。アイデアは、特殊文字を使用することです \W
、単語文字ではない任意の文字に一致します。
1 2 3 4 5 6 7 8 9 |
import re if __name__ == '__main__': input = "Welcome, User_12!!" s = re.sub(r'\W+', '', input) print(s) # WelcomeUser_12 |
The \W
と同等です [^a-zA-Z0-9_]
、アンダースコアとともにすべての数字と文字を除外します。アンダースコアも削除する必要がある場合は、次のようにすることができます。
1 2 3 4 5 6 7 8 9 |
import re if __name__ == '__main__': input = "Welcome, User_12!!" s = re.sub(r'[^a-zA-Z0-9]', '', input) print(s) # WelcomeUser12 |
1つのプログラムで式が複数回使用される場合は、結果の正規表現オブジェクトをコンパイルして保存し、再利用できるようにする必要があります。
1 2 3 4 5 6 7 8 9 10 11 |
import re if __name__ == '__main__': input = "Welcome, User_12!!" pattern = re.compile('\W') s = re.sub(pattern, '', input) print(s) # WelcomeUser_12 |
2.使用する isalnum()
関数
別のオプションは、と一致する文字列をフィルタリングすることです isalnum()
関数。文字列内のすべての文字が英数字の場合はtrueを返し、それ以外の場合はfalseを返します。
1 2 3 4 5 6 7 |
if __name__ == '__main__': input = "Welcome, User_12!!" s = ''.join(filter(str.isalnum, input)) print(s) # WelcomeUser12 |
これは次と同等です。
1 2 3 4 5 6 7 |
if __name__ == '__main__': input = "Welcome, User_12!!" s = ''.join(c for c in input if c.isalnum()) print(s) # WelcomeUser12 |
Pythonの文字列から英数字以外の文字を削除することはこれですべてです。
こちらも参照: