【问题标题】:How to format a text file?如何格式化文本文件?
【发布时间】:2021-09-21 04:38:32
【问题描述】:

我提取了一封电子邮件并将其保存到格式不正确的文本文件中。如何去除不需要的行间距和段落间距?

文件如下所示:

                Hi Kim,
               



                     Hope you are fine.
                



                  Your Code is:
                 

                    42483423



                 Thanks and Regards,
                        

                    Bolt

我想打开和编辑这个文件,并以正确的格式排列它,删除文本之前和文本下方的所有空格,格式如下:

Hi Kim,
Hope you are fine.
Your Code is:
42483423
Thanks and Regards,
Bolt

我的启动程序,

file = open('email.txt','rw')

【问题讨论】:

    标签: python python-3.x string


    【解决方案1】:

    你可以使用re.sub:

    import re
    re.sub('\s\s+', '\n', s)
    

    【讨论】:

    • 当然高效,但如果输入的单词之间有多个空格,它们会变成换行符(例如,“HiKim”变成“Hi\nKim”)可能不会需要。
    【解决方案2】:

    我们可以逐行读取输入文件并忽略除了空格和换行符之外没有任何内容的行。最后,我们输出过滤后的行,最后换行。

    with open("output_file.txt", "w") as fw:
        with open("email.txt") as fr:
                for row in fr:
                    r_s = row.strip()
                    if len(r_s):
                        fw.write(r_s+"\n")
    

    output_file.txt如下:

    Hi Kim,
    Hope you are fine.
    Your Code is:
    42483423
    Thanks and Regards,
    Bolt
    

    如果我们必须保留相同的文件,我们可以将output_file.txt 重命名为os.rename

    import os
    os.rename('output_file.txt','email.txt')                    
    

    编辑:if len(r_s)if len(r_s) > 0 相比,是一种更简洁的方式,正如用户指出的那样:cmets 中的buran

    【讨论】:

    • 只需if r_s: 而不是if len(r_s) > 0: 就可以了。
    • @buran 感谢您的关注!还是习惯了python的简洁性:)我采纳了你的建议,谢谢
    【解决方案3】:

    如果您将整个文本放在一个字符串 (s) 中,您可以执行以下操作:

    formatted = "\n".join(filter(None, (x.strip() for x in s.split("\n"))))
    

    那个:

    • 将字符串分成单独的行
    • 去除任何前导和尾随空格
    • 过滤掉空字符串
    • 重新加入多行字符串

    结果:

    Hi Kim,
    Hope you are fine.
    Your Code is:
    42483423
    Thanks and Regards,
    Bolt
    

    【讨论】:

      猜你喜欢
      • 2021-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 2023-03-19
      相关资源
      最近更新 更多