首先,我只写了几个月的python
Seconly,我有一个需要处理的txt文件。为了正确处理它,每一行必须以'\r\n'结尾。
但是,这种情况并不总是这样,有时它只包含'\n'(换行符)。
因此,我需要检查文件,如果缺少'\r\n',请将'\n'替换为'\r\n'。
我试过几种方法,但都失败了。
首先,我尝试了以下方法:
with open("initial_file.txt",'rb') as file_content:
#1253 is a Windows code page used to write modern Greek.
mycon = file_content.read().decode('cp1253')
if (mycon.count("\r\n") == 0) and (mycon.count("\n") > 0):
with open("destination_file.txt",'w') as file_replace:
file_replace.write(mycon.replace("\n", "\r\n").encode('cp1253'))
但不是用'\r\n'替换'\n',而是用'\r\n'替换。
所以我尝试了另一种方法:
rf = open("initial_file.txt", 'rb')
wf = open("destination_file.txt",'wb')
mycon = rf.read().decode('cp1253')
if (mycon.count('\r\n') == 0) and (mycon.count('\n') > 0):
for line in rf:
newline = line.rstrip('\n')
wf.write(newline).encode('cp1253')
wf.write('\r\n').encode('cp1253')
它第一次起作用,后来就没有了
我不知道我做错了什么,我很感激你的帮助。
您可以使用^{} module 中的open函数。在这里可以显式地指定换行模式。在本例中,每个
'\n'
都转换为'\r\n'
:以下是文件内容(
0d 0a
对应于\r\n
):要将现有文件转换为使用特定的行终止模式,可以在利用universal newlines方法的同时读取行。然后,可以使用为输出文件显式指定的行结束符来编写行。
供参考:
没有编码舞蹈
上下文管理器很酷,不是吗。
您以二进制模式读取输入,但以文本模式写入输出。文本模式自动将换行符转换为平台特定的换行序列。由于CP1253具有与ascii和unicode相同的换行符和回车符,因此可以完全删除字符串替换代码和编码/解码代码。如果不是这样的话,您可能希望以二进制模式打开输出或进行其他更改。
相关问题 更多 >
编程相关推荐