Transforma cada grupo de múltiplas linhas separadas por linha vazia em uma linha?

0

Eu tenho um arquivo de muitos grupos de linhas, com uma linha em branco separando os "grupos" de linhas. Eu quero colocar cada grupo de linhas em uma linha separada por espaço.

entrada

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

saída

line1 line2 line3
lineA lineB
line$ line% line& line£
    
por Mohsen El-Tahawy 15.01.2016 / 18:56

1 resposta

1

Como os comentários são ruins para a formatação, verifique se esse é o formato de entrada / saída correto desejado:

InputFile.txt:

Iamline1
Iamline2
Iamline3
GrouponeEndswithme

Group2startshere
Thisisgroup2line2

OUTPUTFILE.txt:

Iamline1Iamline2Iamline3GrouponeEndswithme Group2startshereThisisgroup2line2

Nesse caso, seu arquivo de saída com TODOS os grupos ainda é apenas UMA linha, não várias linhas. Isso também significaria que QUALQUER espaço em linhas em seus grupos de linhas seria indistinguível de um 'novo grupo' no arquivo de saída. Se este não for o formato desejado, POR FAVOR, forneça uma amostra de entrada e saída na descrição da sua pergunta.

Por sua descrição, aqui está um script que irá criar o seu arquivo. Por favor, certifique-se de modificar o 'open (' filename.txt ',' r ')' com o nome do arquivo correto.

#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 aqui é sua solução perl:

perl -00ne 's/\n/ /g;print "$_\n";' inputfile
    
por 15.01.2016 / 20:23

Tags