Я хочу проверить строку и посмотреть, есть ли хотя бы один из символов в строке - буква или номер. Как мне это сделать?Проверьте, является ли один символ в строке числовым или является буквой [Python]
ответ
Вы можете использовать re.search
if re.search(r'[a-zA-Z\d]', string):
Он возвращает объект соответствия, если строка содержит по-крайней мере, буквы или цифры.
Пример:
>>> s = "foo0?"
>>> re.search(r'[a-zA-Z\d]', s)
<_sre.SRE_Match object; span=(0, 1), match='f'>
>>> s = "???"
>>> re.search(r'[a-zA-Z\d]', s)
>>> s = "???0"
>>> re.search(r'[a-zA-Z\d]', s)
<_sre.SRE_Match object; span=(3, 4), match='0'>
>>>
Никогда не замечал, что python 3 изменил 'repr' объектов соответствия, это приятно. – stranac
Так будет ли «foo0» возвращаться как истинное? –
yep ............. –
str.isalnum
:
In [16]: s = "foo"
In [17]: s.isalnum()
Out[17]: True
In [20]: s = "123"
In [21]: s.isalnum()
Out[21]: True
In [22]: s = "foo123"
In [23]: s.isalnum()
Out[23]: True
Затем используйте любой:
any(x.isalnum() for x in s)
In [24]: s = "[email protected]"
In [25]: any(x.isalnum() for x in s)
Out[25]: True
In [27]: s = "[email protected]()"
In [28]: any(x.isalnum() for x in s)
Out[28]: False
Это будет короткое замыкание, если мы найдем какой-либо альфа- или числовой символ или вернуть значение False если строка не содержит ни одной.
Я предполагаю, что op ожидает «% * & ^% A», чтобы вернуть «True», так как «хотя бы один символ» является буквой. – Falko
Другим решением может быть (не забудьте import string
):
any(c in s for c in string.letters + string.digits)
(В отличие от решения регулярных выражений это Локальнозависимый, например, в том числе немецких умляутов и т.д.)
Написать код ? – jonrsharpe