#python
Вопрос:
Я пытаюсь проверить, является ли первое слово в блоке текста временем. Если оно существует, время будет в формате чч: мм.
Я думал, что это слово работает, но оно не распознает время:
mystring = '17:23 Some text some text some text'
if mystring.split(' ', 1)[0] == '(b[0-2][0-9]:[0-5][0-9]b)':
print('x')
Кто-нибудь может увидеть проблему?
Комментарии:
1. Похоже, вы хотите использовать регулярное выражение, поэтому
import re
и затемif re.search('(^[0-2][0-9]:[0-5][0-9])', mystring): print('x')
2.
==
проверяет равенство; он не выполняет сопоставление регулярных выражений.
Ответ №1:
mystring = '17:23 Some text some text some text'
if mystring.split(' ', 1)[0] == '(b[0-2][0-9]:[0-5][0-9]b)':
print('x')
Здесь вы выполняете сравнение буквальных строк, вам нужно использовать re
module для сопоставления регулярных выражений, в этом случае вы можете выполнить
импорт повторно
import re
mystring = '17:23 Some text some text some text'
if re.match(r'[0-2][0-9]:[0-5][0-9]b', mystring):
print('x')
Обратите внимание, что re.match
проверка выполняется только в начале строки (в отличие от re.search
), поэтому предварительная обработка не требуется. Обратите внимание, что я использовал так называемую необработанную строку, чтобы упростить экранирование — для дальнейшего обсуждения см. re
Документацию модуля.