У меня есть файл с множеством групп строк, с пустой строкой, разделяющей "группы" строк. Я хочу поместить каждую группу строк в одну строку, разделенную пробелом.

вход

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

выход

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

1 ответ1

1

Поскольку комментарии не подходят для форматирования, убедитесь, что это правильный формат ввода / вывода:

InputFile.txt:

Iamline1
Iamline2
Iamline3
GrouponeEndswithme

Group2startshere
Thisisgroup2line2

OutputFile.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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .