【发布时间】:2017-04-03 18:20:16
【问题描述】:
我有一个包含一堆没有空格的 unicode 字符的单行 txt 文件
例子
????????????Ⓜ??????????????????
我想输出一个每行一个字符的txt文件
当我尝试这样做时,我认为最终会拆分 unicode 字符,我该怎么做?
【问题讨论】:
-
你能附上你目前尝试过的代码吗?
标签: python python-unicode
我有一个包含一堆没有空格的 unicode 字符的单行 txt 文件
例子
????????????Ⓜ??????????????????
我想输出一个每行一个字符的txt文件
当我尝试这样做时,我认为最终会拆分 unicode 字符,我该怎么做?
【问题讨论】:
标签: python python-unicode
不存在包含一堆 unicode 字符的文本文件,只有在文件被读取并解码为 Python 对象后,才有意义谈论“unicode 对象”。文本文件中的数据以一种或另一种方式编码。
因此,问题在于以正确的方式读取文件,以便将字符正确解码为 unicode 对象。
import io
enc_source = enc_target = 'utf-8'
with io.open('my_file.txt', encoding=enc_source) as f:
the_line = f.read().strip()
with io.open('output.txt', mode='w', encoding=enc_target) as f:
f.writelines([c + '\n' for c in the_line])
上面我假设目标和源文件编码都是 utf-8。不一定是这种情况,您应该知道源文件是用什么编码的。你可以选择enc_target,但必须有人告诉你enc_source(文件本身不能告诉你)。
【讨论】:
codecs.open() 相比,您的方法有什么优势/不同吗?还是 codecs 是 Python 2 的东西?
io.open 是更好的交叉兼容方式,codecs 是遗留的。有一些技术差异,有兴趣的可以google一下。
这适用于 Python 3.5
line = "??"
with open("file.txt", "w", encoding="utf8") as f:
f.write("\n".join(line))
【讨论】: