Как перевернуть отдельные строки и слова в Python3, конкретно работая над каждым абзацем в текстовом файле? - PullRequest
1 голос
/ 19 января 2020

В основном у меня есть текстовый файл: -

Растения в основном многоклеточные. Зеленые растения получают большую часть своей энергии от солнечного света посредством фотосинтеза. Есть около 320 000 видов растений. Около 260–290 тысяч, дают семена. Зеленые растения производят кислород.

Зеленые растения сегодня занимают значительное количество земли. Мы должны сохранить эту зелень вокруг нас.

Я хотел, чтобы результат был: -

кислород. производят растения зеленые семена. Производят тысячи, 260-290 г. Некоторые растения. Есть виды фотосинтеза. Через солнечные лучи энергии их большинства получают растения Зеленые многоклеточные. в основном это растения

сша. вокруг зелени это беречь мы сегодня. земля значительного количества занимают растения Грин.

Я использовал split(), а затем использовал .join(), чтобы объединить файл, но в итоге все изменилось, а не по абзацам.

Ответы [ 2 ]

2 голосов
/ 19 января 2020

Прочитайте файл и используйте splitlines() для разделения абзацев. Затем итерируйте абзацы, поменяв местами слова.

with open("input.txt") as f:
    read_data = f.read().splitlines()

    for p in read_data:
        words = p.split()
        print(' '.join(reversed(words)))

Для чтения и записи в файл вы можете сделать это:

with open("input.txt", 'r') as f:
    read_data = f.read().splitlines()

with open("output.txt", 'w') as fout:
    for p in read_data:
        words = p.split()
        fout.write(' '.join(reversed(words)))
        fout.write('\n')
2 голосов
/ 19 января 2020

Изменить open("testp.txt") на open("[path to your file]")

import re

text = open("testp.txt").read()
rtext = ""

for p in re.split("\n", text):
    for w in reversed(re.split(" ", p)):
        rtext += w + " "
    rtext = rtext[:-1] + "\n"
rtext = rtext[:-1]

print(rtext)

Обновление: Это так просто:

import re

with open("testp.txt") as f:
    print("\n".join(
        " ".join(reversed(re.split(" ", p))) for p in re.split("\n", f.read())
    ))

Обновление: код без использования регулярного выражения:

with open("testp.txt") as f:
    print("\n".join(
        " ".join(reversed(p.split())) for p in f.read().splitlines()
    ))

Обратите внимание, что вы можете использовать .split("\n") вместо .splitlines()

Результат для всех версий:

Ввод:

Растения в основном многоклеточные. Зеленые растения получают большую часть своей энергии от солнечного света посредством фотосинтеза. Есть около 320 000 видов растений. Около 260–290 тысяч, дают семена. Зеленые растения производят кислород.

Зеленые растения сегодня занимают значительное количество земли. Мы должны сохранить эту зелень вокруг нас.

Выход:

Кислород. производят растения зеленые семена. Производят тысячи, 260-290 г. Некоторые растения. Есть виды фотосинтеза. Через солнечные лучи энергии их большинства получают растения Зеленые многоклеточные. В основном это растения

нас. вокруг зелени это беречь мы сегодня. земли значительного количества занимают растения Зеленый

...