我有一个文本文件,我想删除相邻行之间的所有换行符,其中两行都只有'大写字母'单词/字符。因此,如果一行为ABCD
且下一行为AB
,则结果应为ABCD AB
。我可以逐行循环遍历文本,但我需要一个更优雅的方式,最好是正则表达式。这是一个文本示例:
ABCD
AB
abcd ABB
cd
AB
ABC
ABCD
ab
我希望得到这个:
ABCD AB
abcd ABB
cd
AB ABC ABCD
ab
我写了以下内容,但只适用于连续两个大写行而不是更多。
r = re.compile(r'(\n)([A-Z ]+)(\n)([A-Z ]+)(\n)')
text = r.sub(r'\1\2 \4\5',text)
假设没有其他复杂性(文本已经是清洁的,例如)。我是一个努力学习正则表达式的新手!感谢。
答案 0 :(得分:1)
请参阅this demo:
搜索:(?m)([A-Z ]+)[\r\n]+(?=[A-Z ]+$)
替换:\1
请注意,我们正在插入您曾经使用换行符的空格。
result = re.sub(r“(?m)([AZ] +)[\ r \ n] +(?= [AZ] + $)”,r“\ 1”,主题)