Con*_*ine 1 python file diacritics
我有以下输出,我想将其写入文件:
l = ["Bücher", "Hefte, "Mappen"]
Run Code Online (Sandbox Code Playgroud)
我这样做:
f = codecs.open("testfile.txt", "a", stdout_encoding)
f.write(l)
f.close()
Run Code Online (Sandbox Code Playgroud)
在我的文本文件中,我想查看:[“Bücher”,“ Hefte,” Mappen“],而不是B \ xc3 \ xbccher
有没有办法在不遍历列表并解码每个项目的情况下这样做?喜欢给write()函数任何参数吗?
非常感谢
首先,请确保您使用unicode字符串:在字符串中添加“ u”前缀:
l = [u"Bücher", u"Hefte", u"Mappen"]
Run Code Online (Sandbox Code Playgroud)
然后,您可以写入或附加到文件:
我建议您使用与Python 2/3兼容的io模块。
with io.open("testfile.txt", mode="a", encoding="UTF8") as fd:
for line in l:
fd.write(line + "\n")
Run Code Online (Sandbox Code Playgroud)
要一次阅读文本文件:
with io.open("testfile.txt", mode="r", encoding="UTF8") as fd:
content = fd.read()
Run Code Online (Sandbox Code Playgroud)
结果内容是Unicode字符串。
如果使用UTF8编码对该字符串进行解码,则将获得如下所示的字节字符串:
b"B\xc3\xbccher"
Run Code Online (Sandbox Code Playgroud)
使用编辑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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1594 次 |
| 最近记录: |