我有一个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]