У меня есть один простой текстовый файл, в котором у меня есть несколько деталей, таких как
blah blah Manager blah blah: xxa
blah blah emp_id blah balh: 1234
xx platform : xxab
xx
xx
xx
xx
xx
xx
xx
и т. Д. Около 1000 строк.
Так что я читаю строки с помощью f.readlines () и с помощью для l oop я могу проверить, существует ли строка в строке, тогда я хочу, чтобы эта конкретная строка была назначена в переменной.
f = open('temp.txt','r')
f = f.readlines()
for line in f:
if ('employee') in line:
emp_id = line
print(manager)
elif('manager') in line:
manager = line
print(emp_id)
, поэтому вывод, который я должен получить, - это одна строка, где существует строка сотрудника и менеджера но, скорее всего, я печатаю все строки
f = open('temp.txt','r')
f = f.readlines()
for line in f:
if ('employee') in line:
emp_id = line
print(manager)
break
elif('manager') in line:
manager = line
print(emp_id)
он все еще дает мне ту же строку emp_id в переменной менеджера.
это работает и l oop keep идет, когда я пытаюсь print(emp_id
), и он напечатает все строки после этого совпадения. В случае, если я делаю разрыв после одного l oop и запускаю другое, если еще условие даже тогда, он напечатает старую строку, а не новую совпавшую строку.
Так что теперь единственная путаница заключается в том, как Могу ли я сделать сингл для l oop и могу обработать все эти строки сразу, и если 'строка xx' совпадает в строке, то назначить эту строку в конкретной переменной.
Я могу сделать несколько для циклов но это не будет правильным способом, я думаю, и это также увеличит время.
Ожидаемый результат -
manager :
emp_id :
platform :
Так что я тоже попробовал это с регулярным выражением, но получаю несколько экземпляров даже когда я использую ленивый оператор.
import re
f = open('temp.txt','r')
f = f.readlines()
for line in f:
if re.match("(?=.*?termed)(?=.*?employee)", line, re.IGNORECASE):
emp_id = line
emp_id = re.findall(r"[A-Z]+[0-9]+", emp_id, re.IGNORECASE)[-1]
print(emp_id)
elif re.match("(?=.*?manager)", line, re.IGNORECASE):
manager = line
print(manager)