gpt4 book ai didi

Python:将非ascii字符保存到文件

转载 作者:太空宇宙 更新时间:2023-11-03 13:16:42 24 4
gpt4 key购买 nike

我正在尝试制作一个打印到命令提示符和文件的函数。我收到以下代码的编码/解码错误:

import os

def pas(stringToProcess): #printAndSave
print stringToProcess
try: f = open('file', 'a')
except: f = open('file', 'wb')
print >> f, stringToProcess
f.close()

all = {u'title': u'Pi\xf1ata', u'albumname': u'New Clear War {EP}', u'artistname': u'Montgomery'}

pas(all['title'])

我得到以下输出:

Piñata
Traceback (most recent call last):
File "new.py", line 17, in <module>
pas(all['title'])
File "new.py", line 11, in pas
print >> f, stringToProcess
UnicodeEncodeError: 'ascii' codec can't encode character u'\xf1' in position 2: ordinal not in range(128)

我已经尝试了所有我能从这里的类似答案中想到的 encode()/decode() 排列,但没有成功。如何解决这个错误?

最佳答案

正如有人评论的那样,您可能只需要在编写字符串时指定要使用的编解码器。例如,这对我有用:

def pas(s):
print(s)
with open("file", "at") as f:
f.write("%s\n" % s.encode("utf-8"))

pas(u'Pi\xf1ata')
pas(u'Pi\xf1ata')

如您所见,我专门以追加/文本模式打开文件。如果该文件不存在,则会创建它。我还使用 with 而不是您的 try-except 方法。这只是我喜欢的风格。

正如 Bhargav 所说,您还可以设置默认编码。这完全取决于您在程序中需要多少控制权,两种方式都可以。

关于Python:将非ascii字符保存到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27703796/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com