gpt4 book ai didi

python - 帮助解决 UnicodeEncodeError ('ascii' 、 u'Phase\u2013 II', 6, 7, 'ordinal not in range(128)' )

转载 作者:行者123 更新时间:2023-11-30 23:59:02 25 4
gpt4 key购买 nike

有问题UnicodeEncodeError('ascii', u'Phase\u2013 II', 6, 7, '序数不在范围内(128)')基本上我在这里做的是从Excel表中读取值并且工作表包含这种格式的地址

Phase- II

很想知道如何改变`

somestring = u'Phase \u2013 II'

转为str

谢谢

`

最佳答案

Excel 主要使用 cp1252,所以试试这个:

>>> somestring.encode('cp1252', 'replace')
'Phase \x96 II'
>>> print somestring.encode('cp1252', 'replace')
Phase – II

这不会给你一个 ascii 字符串(因为你的 unicode 字符串不能包含非 ascii 字符),但它确实给你一个字节字符串,如果你将它写入 csv 文件,Excel 将正确解释该字节字符串。

如果您只想打印它以供显示,那么您需要知道用于显示文本的任何内容的输出编码:我从空闲中复制了示例,至少在我的系统上会显示 cp1252,但是如果您在命令提示符中打印它,您可能有另一种有效的编码。如果需要,请使用 DOS chcp 命令选择适当的编码,因为默认编码可能不支持该字符:

C:\>chcp
Active code page: 850

C:\>\python26\python
Python 2.6.2 (r262:71605, Apr 14 2009, 22:40:02) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> somestring = u'Phase \u2013 II'
>>> print somestring.encode('cp850', 'replace')
Phase ? II
>>>

使用“replace”参数进行编码意味着,如果您确实设法获取任何无法解释为 cp1252 的字符,则这些字符将被问号替换。

关于python - 帮助解决 UnicodeEncodeError ('ascii' 、 u'Phase\u2013 II', 6, 7, 'ordinal not in range(128)' ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2688847/

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