将每组由空行分隔的多行变成一行?

将每组由空行分隔的多行变成一行?

我有一个包含多组行的文件,每组行之间用空行分隔。我想将每组行放在一行中,并用空格分隔。

输入

line1
line2
line3
---blank line-
lineA
lineB
---blank line-
line$
line%
line&
line£

输出

line1 line2 line3
lineA lineB
line$ line% line& line£

答案1

由于注释格式很糟糕,请验证这是所需的正确输入/输出格式:

输入文件.txt:

Iamline1
Iamline2
Iamline3
GrouponeEndswithme

Group2startshere
Thisisgroup2line2

输出文件.txt:

Iamline1Iamline2Iamline3GrouponeEndswithme Group2startshereThisisgroup2line2

在这种情况下,包含所有组的输出文件仍然只有一行,而不是多行。这也意味着行组中行中的任何空格看起来都与输出文件中的“新组”没有区别。如果这不是您想要的格式,请在问题描述中提供示例输入和输出。

根据您的描述,这里有一个将创建您的文件的脚本。请确保使用正确的文件名修改“open('filename.txt', 'r')”。

#Line Formatter

newfile = open('newfile.txt', 'w+')

with open('filename.txt', 'r') as f:
    group = ""
    for line in f:
        if len(line) > 0:
            group += line + " "
        else:
            group = group + "\n"
            newfile.write(group)

newfile.close()

Per @MohsenEl-Tahawy 这是他的 perl 解决方案:

perl -00ne 's/\n/ /g;print "$_\n";' inputfile

相关内容