Переписываем txt файл в python, создавая новые строки, где есть определенная строка - PullRequest
0 голосов
/ 09 мая 2020

Я преобразовал выписку из банка в формате PDF в текстовый файл. Вот фрагмент файла .txt:

15 Apr 20DDOPEN 100.00DDBENNON WATER SRVCS29.00DDBG BUSINESS106.00BPC BOB PETROL MINISTRY78.03BPC BARBARA STREAMING DATA30.50CRPAYPAL Z4J22FR450.00CRPAYNAL AAWDL4Z4J22222KHMG30.0019,028.4917 Apr 20CRCASH IN AT HSBC BANK 

Какой самый простой способ переписать текстовый файл в python, чтобы создать новую строку в определенных точках. т.е. после числа «xx.xx» в новой дате, такой как «xx APR»

Например, текст должен стать:

15 Apr 20DDOPEN 100.00
BENNON WATER SRVCS29.00
DDBG BUSINESS106.00...(etc)

Я просто пытаюсь создать PDF более читаемый и полезный при работе с другими моими файлами.

Если вы знаете другой конвертер PDF в txt python, который работает лучше, мне также было бы интересно.

Спасибо за помощь

Ответы [ 2 ]

1 голос
/ 09 мая 2020

Первым шагом будет получение текстового файла в Python

with open(“file.txt”) as file:  
    data = file.read()

В следующей части, изначально я думал, что вы не сможете это сделать, но в вашем примере каждая часть содержит number XX.XX Здесь важно отметить наличие символа '.' в каждом номере.

Используя команду поиска строки Python, вы можете итеративно искать это '.' и через два символа добавить символ новой строки. Вы можете изменить мои индексы ниже, чтобы удалить DD, если хотите.

index = 0
while(index != -1):
    index = data.find('.', index)
    if index != -1:
        data = data[:index+3] + '\n' + data[index+3:]

Затем вам нужно записать новые данные обратно в файл.

file = open('ValidEmails.txt','w')
file.write(data)
1 голос
/ 09 мая 2020

Для данного ввода должно работать следующее:

import re

counter = 0
l = "15 Apr 20DDOPEN 100.00DDBENNON WATER SRVCS29.00DDBG BUSINESS106.00BPC BOB PETROL MINISTRY78.03BPC BARBARA STREAMING DATA30.50CRPAYPAL Z4J22FR450.00CRPAYNAL AAWDL4Z4J22222KHMG30.0019,028.4917 Apr 20CRCASH IN AT HSBC BANK"

nums = re.finditer("[\d]+[\.][\d]+", l)
for elem in nums:
    idx = elem.span()[1] + counter
    l = l[:idx] + '\n' + l[idx:]
    counter += 1
print(l)

Результат:

15 Apr 20DDOPEN 100.00
DDBENNON WATER SRVCS29.00
DDBG BUSINESS106.00
BPC BOB PETROL MINISTRY78.03
BPC BARBARA STREAMING DATA30.50
CRPAYPAL Z4J22FR450.00
CRPAYNAL AAWDL4Z4J22222KHMG30.0019
,028.4917
 Apr 20CRCASH IN AT HSBC BANK

Тогда вы легко сможете записывать построчно в файл.

...