Я использовал regex для выделения определенного ключевого слова в строке, взятой из файла. Я хочу искать весь файл и возвращать группы строк, которые имеют одно и то же ключевое слово.Линии поиска и возврата в файле с соответствующим ключевым словом в python
Я немного смущен этим, и мне было интересно, существует ли способ прямого регулярного выражения для этого в Python?
например. ->
Мой файл может выглядеть следующим образом
1 0001 1 UG science,ee;YEAR=onefour;standard->2;district->9
2 0002 1 UG science,cs;YEAR=onefive;standard->1;district->9
3 0012 2 UG science,eng;YEAR=onefour;standard->3;district->4
4 0021 2 UG science,ee;YEAR=onetwo;standard->2;district->9
5 0056 4 UG science,cs;YEAR=onefive;standard->1;district->8
6 0145 3 UG science,eng;YEAR=onetwo;standard->4;district->2
я использовал регулярное выражение для извлечения
"YEAR=****"
и хотите, чтобы сгруппировать строки по значению
"****"
The выход должен выглядеть следующим образом:
1 0001 1 UG science,ee;YEAR=onefour;standard->2;district->9
3 0012 2 UG science,eng;YEAR=onefour;standard->3;district->4
2 0002 1 UG science,cs;YEAR=onefive;standard->1;district->9
5 0056 4 UG science,cs;YEAR=onefive;standard->1;district->8
4 0021 2 UG science,ee;YEAR=onetwo;standard->2;district->9
6 0145 3 UG science,eng;YEAR=onetwo;standard->4;district->2
Я считаю, что могу сделать это долгий путь открытия файла, хранения в словарях и сопоставления и т. Д. И т. Д. Но хотелось бы знать, есть ли короткий короткий способ сделать это.
с просьбой - немного кода, который я пытался написать и запустить -
#!/usr/bin/python
import re
##open file and read each line of file
dfile = open("datafile.txt","r")
##regex to find YEAR in entry and return YEAR
regex_unique = re.compile(r'(?<=\bYEAR=)[^;]+')
list_Name =[]
for line in dfile:
match1 = re.search(regex_unique,line)
if match1:
if match1.group(0) not in list_Name:
list_Name.append(match1.group(0))
## print (list_Name)
for item in list_Name:
for line in dfile:
match2 = re.search(item,line)
if match2:
print (match2)
последний бит, кажется, не работает - я предполагаю, что если я дам
item
в
re.search
он должен искать это слово во всем файле - теперь, я думаю, мне, возможно, придется добавить подстановочный знак entrie до и после фактического слова, чтобы заставить его работать.
Это может помочь: _https: //regex101.com/r/rI3nD4/2_ –
Звуки как три элемента: (1) регулярное выражение; (2) строка соответствия экстентов регулярных выражений; (3) путем сопоставления строки. У вас (1) выполнено; вы застряли на (2)? Можете ли вы разместить небольшой код? –