#python #regex
#python #регулярное выражение
Вопрос:
Данные выглядят следующим образом:
post date='2008-7' postCount='8' viewCount='24308' questionCount='5' answerCount='76' answeredQuestion='5'
и вот мой код для задачи:
p1 = re.compile(r"post date")
m1 = p1.search(postline)
if m1:
month = re.search(r'post date="([dW] )"', postline).group(1)
Ответ №1:
Вы ищете двойные qoutes "
тогда как в вашем примере используются одиночные qoutes '
.
re.search(r'post date="([dW] )"'
^ ^
.
post date='2008-7' postCount='8' viewCount='24308' questionCount='5' answerCount='76' answeredQuestion='5'
^ ^
Редактировать: Проблема больше не в регулярном выражении, а в вашем python. Вот пример:
import re
postline = "post date='2008-7' postCount='8' viewCount='24308' questionCount='5' answerCount='76' answeredQuestion='5'"
pattern = "post date='([dW] )'"
p1 = re.compile(pattern)
date = p1.search(postline).group(1)
print date
Выводит:
2008-7
Комментарии:
1. Я изменил код следующим образом: month = re.search(r»post date ='([d W] )'», postline).group(1), но он все еще не работает: (
Ответ №2:
Ваша дата всегда будет в формате YYYY-M
? Если да, создайте свой шаблон соответствующим образом? Этот шаблон допускает YYYY-M
или YYYY-MM
:
>>> import re
>>> postline = "post date='2008-7' postCount='8' viewCount='24308' questionCount='5' answerCount='76' answeredQuestion='5'"
>>> pat = r"post date='(d{4}-d{1,2})'"
>>> re.search(pat, postline).group(1)
'2008-7'