【问题标题】:Rewriting a txt file in python, creating new lines where there is a certain string在python中重写一个txt文件,在有某个字符串的地方创建新行
【发布时间】:2020-08-25 01:25:36
【问题描述】:

我已将 PDF 银行对帐单转换为 txt 文件。这是.txt文件的sn-p:

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 转换器,我也会感兴趣。

感谢您的帮助

【问题讨论】:

    标签: python python-textprocessing


    【解决方案1】:

    第一步是将文本文件导入 Python

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

    下一部分,最初,我以为你做不到,但在你的例子中,每个部分都包含一个数字 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)
    

    【讨论】:

      【解决方案2】:

      对于给定的输入,以下应该可以工作:

      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
      

      那么您应该可以轻松地逐行写入文件。

      【讨论】:

        猜你喜欢
        • 2021-10-28
        • 1970-01-01
        • 2022-11-25
        • 2020-09-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多