web-dev-qa-db-ja.com

文字列に英数字とダッシュのみが含まれているかどうかを確認するにはどうすればよいですか?

テストしている文字列は[\w-]+。許可されていない文字のリストを作成してテストする代わりに、Pythonで文字列がこれに準拠しているかどうかをテストできますか?

22
q3d

正規表現に対して文字列をテストする場合は、 re ライブラリを使用します

import re
valid = re.match('^[\w-]+$', str) is not None
32
math

Pythonにも正規表現があります。

import re
if re.match('^[\w-]+$', s):
    ...

または、許可文字のリストを作成することもできます。

from string import ascii_letters
if all(c in ascii_letters+'-' for c in s):
    ...
7
Lev Levitsky

純粋なpythonだけを使用してモジュールをインポートせずに、ダッシュ以外のアルファ、数字を削除します。

string = '#Remove-*crap?-from-this-STRING-123$%'

filter_char = lambda char: char.isalnum() or char == '-'
filter(filter_char, string)

# This returns--> 'Remove-crap-from-this-STRING-123'

または1行で:

''.join([c for c in string if c.isalnum() or c in ['-']])
5
Diego Suarez

文字列にonly英数字とダッシュが含まれているかどうかをテストするには、次のようにします

import re
found_s = re.findall('^[\w-]+$', s)
valid = bool(found_s) and found_s[0] == s
1
richard