将 unicode 的字符串表示形式转换为 unicode
convert string representation of unicode to unicode
这段 python 2.7 代码首先正确打印“1”,但随后抛出 "ValueError: invalid literal for int() with base 10: ''"。
num = '\x001\x00'
print num
print int(num)
我想问题是 type(num) == <type 'str'>
,所以我实际上没有“1”的 unicode 字符串,而是包含字符串“1”的 unicode 表示的 ascii 字符串。我没听错吗?
无论如何,如何将 num 转换为 int() 可以识别的格式?
\x00
字节是这里的问题,而不是 unicode 与字符串值。你可以把它们去掉:
int(num.strip('\x00'))
int()
只接受包含数字的字符串,可能带有小数点、符号(+
或 -
)和周围的空格。 NULL 字节不是空格,即使您的终端在打印时会忽略它们。
代码 出现 以正确打印 1
因为您的终端忽略了您在 1
前后打印的二进制零。
要将字符串正确转换为数字,首先需要知道字符串的格式。例如,如果格式是数字的文本表示被二进制零包围,那么您可以使用 . Otherwise, the struct
模块中的代码对其进行转换,模块是此类转换的有用通用工具。
这段 python 2.7 代码首先正确打印“1”,但随后抛出 "ValueError: invalid literal for int() with base 10: ''"。
num = '\x001\x00'
print num
print int(num)
我想问题是 type(num) == <type 'str'>
,所以我实际上没有“1”的 unicode 字符串,而是包含字符串“1”的 unicode 表示的 ascii 字符串。我没听错吗?
无论如何,如何将 num 转换为 int() 可以识别的格式?
\x00
字节是这里的问题,而不是 unicode 与字符串值。你可以把它们去掉:
int(num.strip('\x00'))
int()
只接受包含数字的字符串,可能带有小数点、符号(+
或 -
)和周围的空格。 NULL 字节不是空格,即使您的终端在打印时会忽略它们。
代码 出现 以正确打印 1
因为您的终端忽略了您在 1
前后打印的二进制零。
要将字符串正确转换为数字,首先需要知道字符串的格式。例如,如果格式是数字的文本表示被二进制零包围,那么您可以使用 struct
模块中的代码对其进行转换,模块是此类转换的有用通用工具。