Извлечение определенных записей из текстового файла и сохранение в новый файл в Python - PullRequest
1 голос
/ 23 октября 2019

У меня есть текстовый файл, который содержит информацию о тысячах квитанций. Существует два типа:

  • Регулярные поступления

REGULAR RECEIPT

  • Сводные поступления

Мне нужно получить все Сводные квитанции и только их содержимое, а также записать их в новый файл.

Вот что яя уже сделал, но то, что он делает, это просто копирует все в новый файл.

filtered = []
with open("sample.txt", "r+") as file: 
    for line in file:
        filtered.append(line.split(""" 
                    Company Name
                      A CITY         
                    Name of CITY              
                     Tin:00000     
                      #10000      
            N#00108235 Cashier ID#0000 
        - - - - - - - - - - - - - - - - - - - -
                Report(X-Report)         
        """))

    outputfile = open("output.txt","w") 
    for lines in filtered:
        outputfile.write(str(lines))

Я довольно новичок в python, и советы или рекомендации очень ценятся. ТИА

Ответы [ 2 ]

0 голосов
/ 23 октября 2019

Сначала мы можем разбить весь файл на список рецептов, как этот.

with open("sample.txt", "r+") as file: 
    receipts = file.read()

# We convert it to a list of receipts
receipts = receipts.split("- - - - -") #<=== This should be tweak to ensure that we split all receipt. You can also use "FROM THE DATE  PERMIT TO USE"

Затем мы фильтруем список часов, что-то уникальное в списке рецептов.

my_filter = lambda receipt: "SUMMARY OF CHARGE" in receipt
summaries = list(filter(my_filter, receipts)) 

with open("out.txt", "a") as outfile:
    for summary in summaries:
        outfile.write(summary) 
0 голосов
/ 23 октября 2019

вам нужно только разделить их по типу? Простое решение, согласно вашему объяснению, состоит в том, чтобы прочитать содержимое файла и найти в этом файле слово «ОБЗОР ЗАРЯДОВ», если оно найдено, сохранить его в новый файл. регулярное выражение для чего-либо со словом abc в нем будет .*abc.* код будет примерно таким, если у вас есть один файл для одной квитанции.

import re
with open("sample.txt","r") as sfile:
   cont=sfile.read()
if (re.match(".*SUMMARY OF CHARGES.*",cont)):
   with open("outfile.txt","w") as outfile:
      outfile.write(cont)

Для разделения содержимого отдельных квитанций выможно использовать группы регулярных выражений. создайте регулярное выражение таким образом, чтобы оно сохраняло только одну квитанцию, затем создайте группу (your_regex) *, а затем выполните итерацию по этой группе, чтобы получить все соответствующие квитанции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...