UnicodeEncodeError:'decimal'编解码器无法对位置8中的字符u'\ x00'进行编码:无效的十进制Unicode字符串

时间:2015-05-10 21:36:15

标签: python python-2.7 unicode encoding utf-8

这一行给了我一个UnicodeEncodeError

studentID = int(studentID.unicode_markup.encode('utf-8').decode('utf-8', 'ignore'))

具体而言,错误是UnicodeEncodeError: 'decimal' codec can't encode character u'\x00' in position 8: invalid decimal Unicode string

如果我将行更改为:

studentID = int(studentID.unicode_markup.encode('utf-8'))

我收到此错误:

ValueError: invalid literal for int() with base 10: '\xc2\xa0\xc2\xa0100\xc2\xa0\xc2\xa0'

我尝试过指定不同的编码(比如'ascii'),但它仍然会给我同样的错误。

非常感谢帮助。

1 个答案:

答案 0 :(得分:2)

100之前和之后,您的字符串中有一些不可见的字符。因此int函数失败,因为它无法将此字符串转换为int。

在尝试转换为int之前,请尝试使用以下方法解析任何数字:

import re

# find all characters in the string that are numeric.
m = re.search(r'\d+', studentID.unicode_markup)
numeric = m.group() # retrieve numeric string
int(numeric) # returns 100