#python #regex
#python #регулярное выражение
Вопрос:
Я пытаюсь написать программу, соответствующую регулярному выражению в файле. Начальные строки моего файла выглядят так, как показано ниже
Alternate Take with Liz Copeland (Day 1) (12am-1am)
Saturday March 31, 2007
No. Artist Song Album (Label) Comment
buy 1 Tones on Tail Go! (club mix) Everything! (Beggars Banquet)
buy 2 Devo (I Can't Get No) Satisfaction Anthology: Pioneers Who Got Scalped (Warner Archives/Rhino)
Мой код, соответствующий первой строке файла, выглядит следующим образом
with open("data.csv") as my_file:
for line in my_file:
re_show = re.compile(r'(Alternate Take with Liz Copeland) ((.*?))s((.*?))')
num_showtitle_lines_matched = 0
m_show = re.match(re_show, line)
bool(m_show) == 1
if m_show:
num_showtitle_lines_matched = 1
show_title = m_show.group()
print("Num show lines matched --> {}".format(num_showtitle_lines_matched))
print(show_title)
Это должно дать мне результат, как показано ниже
Alternate Take with Liz Copeland (Day 1) (12am-1am)
num_showtitle_lines_matched -->1
Но мой результат не показывает никаких выходных данных.
Пожалуйста, дайте мне знать, как это сделать.Заранее спасибо.
Комментарии:
1. Это должно дать мне результат, как показано ниже : какой результат?
2. @PedroLobito Он не форматировал, я отредактировал его сейчас
3. хорошо, но мне все еще неясно, что вы пытаетесь сделать. Вы также пытаетесь сопоставить многострочную строку, когда ее нет (вы разбираете файл построчно), попробуйте использовать регулярное выражение
my_file.read()
.4. вы пропустили, что вы установили
num_showtitle_lines_matched
значение0
в цикле for, после чего вы получаете совпадение, и оно увеличивается до 1, но на последующей итерации оно возвращается к 0
Ответ №1:
Как в комментарии: просто поместите num_showtitle_lines_matched = 0
над циклом:
with open("data.csv") as my_file:
num_showtitle_lines_matched = 0
for line in my_file:
re_show = re.compile(r'(Alternate Take with Liz Copeland) ((.*?))s((.*?))')
m_show = re.match(re_show, line)
bool(m_show) == 1
if m_show:
num_showtitle_lines_matched = 1
show_title = m_show.group()
print("Num show lines matched --> {}".format(num_showtitle_lines_matched))
print(show_title)
Вывод:
Num show lines matched --> 1
Alternate Take with Liz Copeland (Day 1) (12am-1am)
Комментарии:
1. anonymous13: не могли бы вы отметить ответы как правильные и проголосовать «За»? Спасибо