将unicode的字符串表示形式转换为unicode

时间:2015-01-11 12:46:36

标签: python unicode

这段python 2.7代码首先正确打印" 1",然后抛出" ValueError:int()的无效文字,基数为10:'''&# 34 ;.

num = '\x001\x00'
print num
print int(num)

我想问题是type(num) == <type 'str'>,所以我实际上没有#34; 1&#34;的unicode字符串,而是包含字符串的unicode表示的ascii字符串&#34; 1&#34 ;.我做对了吗?

无论如何,如何将num转换为int()将识别的格式?

2 个答案:

答案 0 :(得分:4)

\x00字节是这里的问题,而不是unicode与字符串值。你可以脱掉这些:

int(num.strip('\x00'))

int()只接受包含数字的字符串,可能带有小数点,符号(+-)和周围的空格。 NULL字节不是空格,即使您的终端在打印时忽略它们。

答案 1 :(得分:1)

代码显示以正确打印1,因为您的终端会忽略您在1之前和之后打印的二进制零。

要将字符串正确转换为数字,首先需要知道字符串的格式。例如,如果格式是使用二进制零包围数字的文本表示,则可以使用Martijn's answer中的代码对其进行转换。否则,struct模块是此类转换的有用通用工具。