在 python 3.7 中将文字 ' "\n" ' 写入文档文件时出现问题
Problem writing literal ' "\n" ' to a document file in python 3.7
感谢您的阅读。我目前正在努力解决 Python 3.7 中一个看似简单的问题,这让我抓狂。该论坛中的类似主题对我没有产生有效的解决方案。
我有一个具有以下结构的文档:
line1
line2
line3
我必须解析为如下格式:
"line1\n"
"line2\n"
等等
遗憾的是,虽然我可以使用 repr('\n"') 或 ('//n'") 使更改的行在终端上正确显示,但每当我尝试使用 . write() 或使用 >> 重定向,在 \n 的位置添加了一个额外的换行符,尽管有 repr、// 或 r,所以文件中的输出看起来像:
”行
\n
有问题的代码行是:
'''
'"' + str(line) + '//n"' #or + repr('/n"')
'''
我也试过:
'''
'"' + str(line) + '//n'.replace('//n', '/n')
'''
根据另一个用户的建议。
r"/n" 似乎什么都不做。欢迎任何建议,以及有关如何在 shell 中解决此问题的建议。
谢谢你的时间。
也许如果你尝试使用 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" 进行写入,它会在写入前清除整个文件。如果要追加,只需使用 "a" 进行追加。以下是所有可能的打开方式:
"r" 打开文本文件进行阅读。流位于
文件开头。
"r+" 读写打开。流位于
文件开头。
"w" 将文件截断为零长度或创建文本文件以供写入。
流位于文件的开头。
"w+" 读写打开。如果是,则创建文件
不存在,否则被截断。流是
位于文件开头。
"a" 打开以追加(写入文件末尾)。该文件是
如果不存在则创建。流位于
文件结尾。
"a+" 打开以进行读取和追加(在文件末尾写入)。这
如果文件不存在,则创建该文件。初始文件
读取位置在文件的开头,但是
输出总是附加到文件的末尾。
告诉我它是否有效,是否有用!
编辑:在我看到一条评论后,才意识到:你使用了 / 而不是 \,所以它不能工作...一定要使用 \n! XD
据我了解,您想在输出文件中保留新行 + 将 \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'。
写入文件时,我使用了 join 和 2 个额外的 \n,因为您的输出保留了换行符。如果不想在输出中换行,可以删除并保留一个 \n 。
感谢您的阅读。我目前正在努力解决 Python 3.7 中一个看似简单的问题,这让我抓狂。该论坛中的类似主题对我没有产生有效的解决方案。
我有一个具有以下结构的文档:
line1
line2
line3
我必须解析为如下格式:
"line1\n"
"line2\n"
等等
遗憾的是,虽然我可以使用 repr('\n"') 或 ('//n'") 使更改的行在终端上正确显示,但每当我尝试使用 . write() 或使用 >> 重定向,在 \n 的位置添加了一个额外的换行符,尽管有 repr、// 或 r,所以文件中的输出看起来像:
”行 \n
有问题的代码行是:
'''
'"' + str(line) + '//n"' #or + repr('/n"')
'''
我也试过:
'''
'"' + str(line) + '//n'.replace('//n', '/n')
'''
根据另一个用户的建议。
r"/n" 似乎什么都不做。欢迎任何建议,以及有关如何在 shell 中解决此问题的建议。 谢谢你的时间。
也许如果你尝试使用 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" 进行写入,它会在写入前清除整个文件。如果要追加,只需使用 "a" 进行追加。以下是所有可能的打开方式: "r" 打开文本文件进行阅读。流位于 文件开头。
"r+" 读写打开。流位于 文件开头。
"w" 将文件截断为零长度或创建文本文件以供写入。 流位于文件的开头。
"w+" 读写打开。如果是,则创建文件 不存在,否则被截断。流是 位于文件开头。
"a" 打开以追加(写入文件末尾)。该文件是 如果不存在则创建。流位于 文件结尾。
"a+" 打开以进行读取和追加(在文件末尾写入)。这 如果文件不存在,则创建该文件。初始文件 读取位置在文件的开头,但是 输出总是附加到文件的末尾。
告诉我它是否有效,是否有用!
编辑:在我看到一条评论后,才意识到:你使用了 / 而不是 \,所以它不能工作...一定要使用 \n! XD
据我了解,您想在输出文件中保留新行 + 将 \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'。
写入文件时,我使用了 join 和 2 个额外的 \n,因为您的输出保留了换行符。如果不想在输出中换行,可以删除并保留一个 \n 。