如何^M
从 Python 脚本中的文本文件(行尾)中删除字符?
我做了以下事情,并且^M
在每个换行符处都有。
file = open(filename, "w")
file.write(something)
如何^M
从 Python 脚本中的文本文件(行尾)中删除字符?
我做了以下事情,并且^M
在每个换行符处都有。
file = open(filename, "w")
file.write(something)
如果您正在编写文件,则应指定open(filename, "wb")
. 这样,您将以二进制模式编写,Python 不会尝试为您所在的系统确定正确的换行符。
Python 可以以二进制模式或文本模式打开文件。文本是默认值,因此“w”模式表示以文本模式写入。在文本模式下,Python 会根据你所在的平台调整行尾。这意味着在 Windows 上,此代码:
f = open("foo.txt", "w")
f.write("Hello\n")
将生成一个包含“Hello\r\n”的文本文件。
您可以在模式下使用“b”以二进制模式打开文件:
f = open("foo.txt", "wb")
f.write("Hello\n")
生成一个包含“Hello\n”的文本文件。
string.replace('\r', '') 为我工作。
丑陋,但 r+ 或 r+b 也没有其他工作(对我来说,当然):(
dos2unix filename.py
将换行符转换为 UNIX 样式。
为了便携性,您可以尝试以下方法
import os
file = open(filename, "w")
file.write(something.replace('\r\n', os.linesep))
json.dump 时如何显式设置回车?包含解决方案:该open
函数有一个额外的参数newline
:
file = open(filename, "w", newline="\n")
file.write(something)
换行控制通用换行模式的工作方式(它仅适用于文本模式)。它可以是 None、''、'\n'、'\r' 和 '\r\n'。它的工作原理如下:
从流中读取输入时,如果换行符为无,则启用通用换行符模式。输入中的行可以以 '\n'、'\r' 或 '\r\n' 结尾,这些行在返回给调用者之前会被翻译成 '\n'。如果是 '',则启用通用换行模式,但行尾返回给调用者未翻译。如果它具有任何其他合法值,则输入行仅由给定字符串终止,并且行结束符未翻译地返回给调用者。
将输出写入流时,如果换行符为 None,则写入的任何 '\n' 字符都将转换为系统默认行分隔符 os.linesep。如果换行符是 '' 或 '\n',则不进行翻译。如果换行符是任何其他合法值,则写入的任何 '\n' 字符都将转换为给定的字符串。
在文件上运行 autopep8
> apt-get install python-autopep8
> autopep8 python_file_name > new_python_file_name.py