如何在Python2.7中打印德语发音字符?

2024-09-27 21:25:24 发布

您现在位置:Python中文网/ 问答频道 /正文

在Excel2007电子表格(我使用xlrd xlwt和openpyxl)中处理德语单词(有时包含元音变音符),我得到以下值:

var = str(ws.cell(row=i+k,column=0).value).encode('latin-1')

我得到打印(var):

^{pr2}$

直到出现一个包含元音变音字符的单词,当我得到:

Traceback (most recent call last):
  File "C:\Users\cristina\Documents\horia\Linguistics3\px t3.py", line 68, in <module>
    var = str(ws4.cell(row=i+k,column=0).value).encode('latin-1')
UnicodeEncodeError: 'ascii' codec can't encode character u'\xdf' in position 3:ordinal not in range(128)

程序就停止了。在

如果我将var定义为:

var = u'str(ws4.cell(row=i+k,column=0).value)'.encode('latin-1')

当尝试打印(var)时,我得到:

var=str(ws.cell(row=i+k,column=0).value)

程序正常运行直到结束

我可以在pythonshell中获得var的值,但不能通过程序中的“print(var)”获得。在

谁能给我一个解决方案吗?在


Tags: in程序wsvaluevarcellcolumn单词
1条回答
网友
1楼 · 发布于 2024-09-27 21:25:24

首先,读这个:http://www.joelonsoftware.com/articles/Unicode.html(认真地)

然后,了解Python2有两种不同的数据类型: unicode,表示“不可知”处理所有可能的字符,但不能用于 输入/输出,如“打印”或写入文件,而不是将编码到 其他数据类型:字符串。在

字符串依赖于编码。在

考虑到您的错误消息,ws4.cell(row=i+k,column=0).value调用返回的是unicode值。(我不能在我的非windows环境下测试它)-为了确定不是猜测工作,您可能希望在那里运行一次 print (type(ws4.cell(row=i+k,column=0).value)只是为了断言您得到的是unicode值。在

{3{当你的后续调用没有编码的时候,{3不告诉你后续的编码错误。在

如果是这样,只需替换str调用unicode

var = u'str(ws4.cell(row=i+k,column=0).value)'.encode('latin-1') 

这应该能解决你的问题。我希望你已经读过我上面链接的那篇文章,这篇文章对你很有帮助。在

另外,用您正在使用的相应编码标记您的Python源代码-否则 源代码中的任何非ASCII字符都会出错。在

例如,在代码的第一行写下:

^{pr2}$

(尽管对于任何严肃的项目,您应该改用utf-8。)

相关问题 更多 >

    热门问题