Как сказать, если строка начинается с цифры?
У меня есть строка, которая начинается с цифры (от 0 до 9) Я знаю, что могу" или " 10 тестовых случаев с использованием startswith () но, вероятно, есть более аккуратное решение
вместо того, чтобы писать
if (string.startswith('0') || string.startswith('2') ||
string.startswith('3') || string.startswith('4') ||
string.startswith('5') || string.startswith('6') ||
string.startswith('7') || string.startswith('8') ||
string.startswith('9')):
#do something
есть ли более умный / более эффективный способ?
10 ответов:
иногда, вы можете использовать regex
>>> import re >>> re.search('^\s*[0-9]',"0abc") <_sre.SRE_Match object at 0xb7722fa8>
ваш код не работает; вам нужно
or
вместо||
.попробовать
'0' <= strg[:1] <= '9'
или
strg[:1] in '0123456789'
или, если вы действительно без ума
startswith
,strg.startswith(('0', '1', '2', '3', '4', '5', '6', '7', '8', '9'))
for s in ("fukushima", "123 is a number", ""): print s.ljust(20), s[0].isdigit() if s else False
результат
fukushima False 123 is a number True False
вы также можете использовать
try...except
:try: int(string[0]) # do your stuff except: pass # or do your stuff
вот мои "ответы" (пытаясь быть уникальным здесь, я на самом деле не рекомендую ни для этого конкретного случая :-)
используя
ord () испециальныйa <= b <= c
форма://starts_with_digit = ord('0') <= ord(mystring[0]) <= ord('9') //I was thinking too much in C. Strings are perfectly comparable. starts_with_digit = '0' <= mystring[0] <= '9'
(это
a <= b <= c
, какa < b < c
, это специальная конструкция Python, и это вроде аккуратно: сравнить1 < 2 < 3
(true) и1 < 3 < 2
(false) и(1 < 3) < 2
(правда). Это не как это работает в большинстве других языков.)С помощью регулярные выражение:
import re //starts_with_digit = re.match(r"^\d", mystring) is not None //re.match is already anchored starts_with_digit = re.match(r"\d", mystring) is not None
вы могли бы использовать регулярные выражения.
вы можете обнаружить цифры с помощью:
if(re.search([0-9], yourstring[:1])): #do something
par [0-9] соответствует любой цифре, а yourstring[:1] соответствует первому символу вашей строки
использовать Регулярные Выражения, Если вы собираетесь каким-то образом расширить функциональность метода.