从 python 2 转换为 python 3 时从字符串获取整数



我有一个python2程序,但是,我正在用python3重写它。 我读取了一个 netcdf 文件,并保存了变量。 其中一个变量应该是一个字符串,我需要将该字符串转换为整数。 在python 2中,我使用此方法:

nums = fid.variables['num'][:]
>>> nums[0]
>>> ['0','1','2','3']
Number = [int(''.join(t)) for t in nums]
>>> Number[0]
>>> 123

但是,在python 3中,变量"nums"输出:

>>>nums[0]
>>>[b'0',b'1',b'2',b'3']

我收到错误:

TypeError: sequence item 0: expected str instance, numpy.bytes_ found

为了将类型从字节更改为字符串,我尝试了:

newNum = [t.decode('UFT-8') for t in nums]

但我收到错误:

AttributeError: 'numpy.ndarray' object has no attribute 'decode'

问题:

如何将字母和数字字符串转换为整数?

鉴于您的编辑,您的问题是 nums 是容器的容器,因此您的列表理解不起作用,我可以建议嵌套理解吗?

>>> nums = [[b'0',b'1',b'2',b'3'], [b'0',b'1',b'2',b'3']]
>>> [[b.decode('utf8') for b in t] for t in nums]
[['0', '1', '2', '3'], ['0', '1', '2', '3']]

使用这种方法,您可以执行最初打算的操作:

>>> [int("".join(t)) for t in newNums]
[123, 123]

相关内容

  • 没有找到相关文章

最新更新