删除Python中的特定换行符

时间:2016-12-29 07:31:23

标签: python regex

我正在尝试以编程方式格式化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

2 个答案:

答案 0 :(得分:1)

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

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

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

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

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

>>> line.rstrip()
'Welcomes'

答案 1 :(得分: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