#python-3.x #regex #regex-group #re
#python-3.x #регулярное выражение #регулярное выражение-группа #python-re
Вопрос:
У меня есть несколько текстовых файлов, и я хотел извлечь строку при совпадении определенного шаблона и добавить ее во фрейм данных с именем файла и строкой. В моем случае в этих текстовых файлах присутствует несколько одинаковых шаблонов.
sample.txt:
"government high school
Govt high school physics department
Employee Designation School Assistant"
What I am getting:
file | Org | Org2
sample.txt government high school Govt high school physics department
sample.txt government high school Employee Designation School Assistant
What I am looking for:
file | Org | Org2
sample.txt government high school Govt high school physics department
Вот код, который я использую :
prs_path = "C://Users//subhr//scope_txt//"
df3 = []
for file in os.listdir(prs_path):
Name = None
with open(prs_path file) as fd:
for line in fd:
line = line.lower()
match = re.search('r(^.*government.*$)', line, re.I)
Org = ""
if match:
Org = match.group()
df3.append([file, Org])
Org2 = ""
Org3 = ""
Org = ""
if match is None:
match2 = re.search('r(^.*school.*$)|(^.*college.*$)', line,re.I)
if match2:
Org2 = match2.group()
df3.append([file, Org, Org2])
if match2 is None:
match3 = re.search('r(^.*power.*$)', line, re.I)
if match3:
Org3 = match3.group()
df3.append([file, Org, Org2, Org3])
if match3 is None:
continue
Где я ошибаюсь?
Ответ №1:
Попробуйте использовать этот случай r"^(.*?):$n"(.*?) (.*?)$n(.*?) (.*? .*?) (.*?)$"
Ваш ввод будет разделен на 6 групп, проверьте это для тестирования.
Комментарии:
1. Спасибо за ответ, но это был всего лишь пример. В моих реальных текстовых файлах есть разные строки разной длины: (