Python Regex - 根据条件连接多行

时间:2014-06-08 21:37:27

标签: python regex

我有一个文本文件,我想删除相邻行之间的所有换行符,其中两行都只有'大写字母'单词/字符。因此,如果一行为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)

假设没有其他复杂性(文本已经是清洁的,例如)。我是一个努力学习正则表达式的新手!感谢。

1 个答案:

答案 0 :(得分:1)

请参阅this demo

搜索:(?m)([A-Z ]+)[\r\n]+(?=[A-Z ]+$)

替换:\1

  1. 请注意,我们正在插入您曾经使用换行符的空格。

    result = re.sub(r“(?m)([AZ] +)[\ r \ n] +(?= [AZ] + $)”,r“\ 1”,主题)