python将变音符号写入文件

时间:2016-12-27 16:03:51

标签: python file diacritics

我有以下输出,我想写入文件:

l  = ["Bücher", "Hefte, "Mappen"]

我这样做:

f = codecs.open("testfile.txt", "a", stdout_encoding)
f.write(l)
f.close()

在我的文本文件中我想看到:[“Bücher”,“Hefte,”Mappen“]而不是B \ xc3 \ xbccher

有没有办法在不循环列表并解码每个项目的情况下这样做?想给write()函数赋予任何参数吗?

非常感谢

1 个答案:

答案 0 :(得分:5)

首先,确保使用 unicode 字符串:在字符串中添加“u”前缀:

l  = [u"Bücher", u"Hefte", u"Mappen"]

然后你可以写或附加到文件:

我建议您使用兼容Python 2/3的io模块。

with io.open("testfile.txt", mode="a", encoding="UTF8") as fd:
    for line in l:
        fd.write(line + "\n")

要一起阅读您的文本文件:

with io.open("testfile.txt", mode="r", encoding="UTF8") as fd:
    content = fd.read()

结果 content 是一个Unicode字符串。

如果使用UTF8编码解码此字符串,您将获得 bytes 字符串,如下所示:

b"B\xc3\xbccher"
使用writelines

修改

方法writelines()将一系列字符串写入文件。序列可以是产生字符串的任何可迭代对象,通常是字符串列表。没有回报值。

# add new lines
lines = [line + "\n" for line in l]

with io.open("testfile.txt", mode="a", encoding="UTF8") as fd:
    fd.writelines(lines)