Проблема записи литерала '"\ n"' в файл документа в python 3.7 - PullRequest
0 голосов
/ 16 апреля 2020

и спасибо за чтение. В настоящее время я борюсь с кажущейся простой проблемой в Python 3.7, которая сводит меня с ума. Подобные темы на этом форуме не дали мне рабочего решения.

У меня есть документ со следующей структурой:

line1

line2 

line3

Что мне нужно проанализировать в таком формате:

"line1\n"

"line2\n"

et c.

К сожалению, хотя я могу заставить измененные строки правильно отображаться на терминале, используя repr ('\ n "') или ('// n'"), всякий раз, когда я пытаюсь записать вывод в файл, используя .write ( ) или перенаправить с помощью >>, добавляется дополнительный символ новой строки в позиции \ n, несмотря на repr, // или r, поэтому вывод, который заканчивается в файле, выглядит следующим образом:

"строка \ n "

Рассматриваемая кодовая строка будет выглядеть так: '' ''" '+ str (строка) +' // n "'#or + repr (' / n" ')' '' Я также пробовал : '' '' "'+ str(line) + '//n'.replace('//n', '/n')' '' по предложению другого пользователя.

r "/ n", похоже, вообще ничего не делает. Любые предложения будут приветствоваться, а также предложения о том, как решить эту проблему в оболочке. Спасибо за ваше время.

Ответы [ 2 ]

0 голосов
/ 16 апреля 2020

Насколько я понял, вы хотите сохранить новые строки в выходном файле + добавили \ n в конец каждой строки. Посмотрите, работает ли ниже для вас.

with open('source.txt') as f:
    list_ = [(line.strip() + r'\n') for line in f if line != '\n']

print(list_)

with open('output.txt', 'w') as wb_file:
    wb_file.write('\n\n'.join(list_))

list_ составлен с использованием понимания списка. добавляя фальшивую '\ n' в конец каждой строки чтения.

при записи в файл, я использовал объединение с 2 дополнительными \ n, поскольку ваш вывод был сохранен с переводом строк. Вы можете удалить и оставить один \ n, если вы не хотите новых строк в выводе.

0 голосов
/ 16 апреля 2020

Может быть, если вы попробуете с readlines:

#write into the file !
file = open("yourpath", "w")   #w is for write
mylistofstrings = ["line1", "\nline2", "\nline3"]
file.writelines(mylistofstrings)
file.close()
#read the output to check :
file = open("yourpath", "r")   #r is for read
print(file.read())
file.close()

Вывод:

line1
line2
line3

Предупреждение: если вы используете "w" для записи, как здесь сделано, он очистит весь файл перед тем как писать Если вы хотите добавить, просто go с "a" для добавления. Вот все возможные способы его открытия: «r» Открыть текстовый файл для чтения. Поток располагается в начале файла.

"r +" Открыть для чтения и записи. Поток располагается в начале файла.

"w" Обрезать файл до нулевой длины или создать текстовый файл для записи. Поток располагается в начале файла.

"w +" Открыть для чтения и записи. Файл создается, если он не существует, в противном случае он усекается. Поток располагается в начале файла.

"a" Открыть для добавления (запись в конце файла). Файл создается, если он не существует. Поток располагается в конце файла.

"a +" Открыть для чтения и добавления (запись в конце файла). Файл создается, если он не существует. Начальная позиция файла для чтения находится в начале файла, но вывод всегда добавляется в конец файла.

Скажите, работало ли это, и было ли это полезно!

РЕДАКТИРОВАТЬ: после того, как я увидел комментарий, просто понял: вы использовали / вместо \, поэтому он не может работать ... ОБЯЗАТЕЛЬНО ИСПОЛЬЗУЙТЕ \ n! XD

...