【发布时间】:2016-05-09 01:11:44
【问题描述】:
我在 python 3 中编写文本文件的标题时遇到了问题。 我有一个包含 unicode 和换行符的标题。以下是一个最小的工作示例:
with open('my_log.txt', 'wb') as my_file:
str_1 = '\u2588\u2588\u2588\u2588\u2588\n\u2588\u2588\u2588\u2588\u2588'
str_2 = 'regular ascii\nregular ascii'
my_file.write(str_1.encode('utf8'))
my_file.write(bytes(str_2, 'UTF-8'))
上面的工作,除了输出文件没有新行(基本上看起来我用''替换了'\n')。像下面这样:
████████regular asciiregular ascii
我期待:
████
████
regular ascii
regular ascii
我尝试用 u'\u000A' 和其他基于类似问题的字符替换 '\n' - 但我得到了相同的结果。
另一个可能相关的问题:我知道使用上述编码和字节方法让我的生活变得更加艰难。仍然习惯于 py3 中的 unicode,所以任何关于这方面的建议都会很棒,谢谢!
编辑 基于 Ignacio 的回应和更多研究:以下似乎产生了预期的结果(基本上从 '\n' 转换为 '\r\n' 并确保所有行的编码都是正确的):
with open('my_log.txt', 'wb') as my_file:
str_1 = '\u2588\u2588\u2588\u2588\u2588\r\n\u2588\u2588\u2588\u2588\u2588'
str_2 = '\r\nregular ascii\r\nregular ascii'
my_file.write(str_1.encode('utf8'))
my_file.write(str_2.encode('utf8'))
【问题讨论】:
-
我认为如果需要,最好用编码更改为文本模式并让 Python 更改
\n。
标签: python-3.x text unicode newline file-writing