Python: обратные слова в каждом абзаце файла без изменения порядка абзаца? - PullRequest
2 голосов
/ 21 января 2020

Я хочу создать файл text_out.txt путем обращения слов в text_in.txt в файл, подобный этому:

text_in.txt имеет два абзаца , как показано ниже:

Hello world, I am Here.

I am eighteen years old.

text_out.txt должен быть таким:

Here. am I world, Hello

old. years eighteen am I

Мой код:

filein = open ('text_in.txt', 'r+')

fileout = open ('text_out.txt', 'w')


data = filein.read()

array1 = data.split(' ')

array1.reverse()

out1 = " " .join(array1)

fileout.write(out1)

Мои результаты old. years eighteen am I \nHere. am I world, Hello

Может ли кто-нибудь помочь мне решить эту проблему? Большое спасибо!

Ответы [ 5 ]

4 голосов
/ 21 января 2020

Вам нужно:

k = """Hello world, I am Here.
I am eighteen years old."""

x = k.split("\n")

x = [" ".join(i.split()[::-1]) for i in x]

k = "\n".join(x)
print(k)

Вывод:

Here. am I world, Hello
old. years eighteen am I
1 голос
/ 21 января 2020

Разделите строку на \ n и затем переверните все строки одну за другой.

filein = open ('text_in.txt', 'r+')
fileout = open ('text_out.txt', 'a')

data = filein.read()
array1 = data.split('\n')

for i in array1:
    array2 = i.split(' ')
    array2.reverse()
    out1 = " " .join(array2)
    fileout.write(out1)
    #print(out1)
1 голос
/ 21 января 2020

Проблема в вашем коде заключается в том, что вы сначала меняете порядок абзацев, но вам действительно нужно сохранить порядок. Также я бы использовал менеджер контекста (with open(...)) для обработки файлов, чтобы гарантировать, что файлы открываются и закрываются автоматически.

Я бы сделал это так:

with open("text_in.txt", 'r') as fin:
    read_data = fin.read().splitlines()        #read and split into list of paragraphs

with open("text_out.txt", 'w') as fout:
    for p in read_data:
        words = p.split()                      #split words (by whitespace)
        fout.write(' '.join(reversed(words)))  #reverse the words
        fout.write('\n')
1 голос
/ 21 января 2020

Попробуйте это

filein = open ('text_in.txt', 'r+')

fileout = open ('text_out.txt', 'w')


data = filein.read()
out1 =  '' # initialise the empty variable
for each in data.split('\n'): # split at every instance of a newline character \n
  array1 = each.split(' ') # Use the same code
  array1.reverse()
  out1 += " " .join(array1)  + "\n" # add a new line to split

fileout.write(out1) # write

Я дал комментарии в качестве объяснения

1 голос
/ 21 января 2020

Почему бы вам не попробовать это?

filein = open ('text_in.txt', 'r+')

fileout = open ('text_out.txt', 'a')

fileread = filein.readlines()

for data in fileread:

    array1 = data.split(' ')

    array1.reverse()

    out1 = " " .join(array1)

    fileout.write(out1)

Здесь идея состоит в том, чтобы прочитать содержимое файла построчно (данные представляют каждую строку в l oop), а затем повернуть и запишите их в файл в режиме append . Кроме того, вы также можете использовать filein.readline() для чтения строки за раз. Вот вывод:

Here. am I world, Hello
old. years eighteen am I
...