Найти и пройти каждый раздел в файле? - PullRequest
0 голосов
/ 21 сентября 2019

Я читаю файл построчно и делю на разделы по появлению слова "-U-: Sent", используя python.Теперь для каждого из разделов я написал набор регулярных выражений для извлечения определенных данных.Я пытаюсь найти и прочитать каждый раздел один за другим и распечатать данные для этого раздела.Однако я не получаю никакого вывода.

Часть моего файла выглядит следующим образом:

LOAD: -U-: Sent: ID101 USD50000 None  
LOAD: ............data................  
LOAD: -U-: Sent: ID202 RUP30000 124ui  
LOAD:.............data...............  

Так, что каждый раздел выглядит следующим образом:

LOAD: -U-: Sent: ID101 USD50000 None  
LOAD: ............data................  (till here) 

Этокод, который я использую:

block=0
with open("file.txt") as f:
   for line in f:
       if '-U-:Sent' in line:                #creating blocks or sections
          block+=1
          print("--------Block"+str(block)+"-------") 
       print(line)
       for l in line.splitlines():           #to go through each section
           m=re.findall(r'--------Block', l) #find sections and then read through them
           if m:
              #regex operation lines (same for all sections)

Я ожидаю найти каждый раздел и затем выполнить извлечения регулярных выражений для каждого:

-------Block------  
{'ID':'101', 'Currency' : 'USD'}

(код извлечения написан, мне просто нужнонайти каждый блок и выполнить код извлечения через каждый), но фактический вывод становится пустым.Как я могу изменить код для получения желаемого результата?

1 Ответ

0 голосов
/ 21 сентября 2019

Вы можете просто прочитать весь файл в одну строку, используя file.read(), а затем очистить его, используя модуль python re и строковые split() и strip() методы, чтобы напрямую получить список необходимых данных.

Попробуйте это:

import re
with open("your_file_name") as file:
    blocks = [re.sub('LOAD.*','',section).strip(" \n\n") for section in file.read().split("LOAD: -U-: Sent:")][1:]
print(blocks)

Вывод

['ID101 USD50000 None', 'ID202 RUP30000 124ui']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...