【问题标题】:Removing specific line breaks in Python在 Python 中删除特定的换行符
【发布时间】:2017-05-13 12:10:33
【问题描述】:

我正在尝试以编程方式格式化一个 pdf 菜单,并且一切顺利,直到我注意到某些换行符不合适,打破了模式。这是我的原始文本的一部分:

LATIN
Saturday & Sunday: 
Build Your Own Breakfast Burrito, Scrambled Eggs, Cheesy Eggs, Latin Tofu
Scramble, Latin Roasted Vegetables
DESSERT
Daily: 
Assorted Pastries

我注意到一些项目(如拉丁豆腐炒)在它们的中间有一个换行符。鉴于菜单项是可变的并且在其他地方可能有额外的换行符,有什么办法可以删除逗号之间出现的换行符(因为所有项目都是逗号分隔的)?

编辑: 理想情况下,最终结果应该是这样的:

LATIN
Saturday & Sunday: 
Build Your Own Breakfast Burrito, Scrambled Eggs, Cheesy Eggs, Latin Tofu Scramble, Latin Roasted Vegetables
DESSERT
Daily: 
Assorted Pastries

【问题讨论】:

  • 能否包含您想要的最终结果?
  • 刚刚添加了一个可能的最终结果
  • re.sub('(?! )\s',' ',string)
  • @MayurH 这行得通,但也删除了所有其他换行符

标签: python regex


【解决方案1】:

尝试使用re.sub 和下面的正则表达式和MULTILINE,它只会替换逗号前面的换行符和包含逗号的下一行

但是,如果换行符位于最后一项,则它将不起作用,例如。拉丁烤蔬菜

txt = '''
LATIN
Saturday & Sunday: 
Build Your Own Breakfast Burrito, Scrambled Eggs, Cheesy Eggs, Latin Tofu
Scramble, Latin Roasted Vegetables
DESSERT
Daily: 
Assorted Pastries
'''

import re
newtxt = re.sub('(,[^\r\n]*?)[\r\n](?=[^\r\n]+?,)', r'\1 ', txt, re.MULTILINE)
# LATIN
# Saturday & Sunday:
# Build Your Own Breakfast Burrito, Scrambled Eggs, Cheesy Eggs, Latin Tofu Scramble, Latin Roasted Vegetables
# DESSERT
# Daily:
# Assorted Pastries

【讨论】:

    【解决方案2】:

    在 python 中,您可以使用 line.strip('\n')line.strip('\t') 删除换行符和点击空格。

    >>> line="Welcomes\n"
    >>> line.strip("\n")
    'Welcomes'
    

    或者,您可以使用 replace('\n','') 从字符串行中删除所有换行符。

    >>> line="Welcomes\n"
    >>> line.replace('\n','')
    'Welcomes'
    >>> 
    

    或者,您可以使用rstrip() 方法从字符串行中删除所有换行符

    >>> line.rstrip()
    'Welcomes'
    

    【讨论】:

    • 我已经研究了 rstrip() 和 strip() 以及 replace()。我只想替换逗号之间的换行符。
    猜你喜欢
    • 2012-03-07
    • 2019-10-09
    • 2017-03-30
    • 1970-01-01
    • 1970-01-01
    • 2020-12-05
    • 2019-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多