我有一个字符串
a = 2,00,02
此字符串的每个元素都具有数据类型str
。
我想将其转换为a = [2, 00, 02]
之类的列表,因此a
为list
且a的每个元素都应具有数据类型int
我所做的是a = [int(each) for each in a]
,它给了我a = [2,0,2]
,其中a是列表,a中的每个都是整数。
但那不是我想要做的。我希望a = [2, 00, 02]
中间0
应该是00
,而最后02
应该只有02
而不是0和2。
我该怎么做?
答案 0 :(得分:1)
00
与0
的号码相同。
In [59]: 00 == 0
Out[59]: True
但Python始终将此数字表示为0
,而不是00
。如果您想保留00
,则必须使用字符串:
In [56]: a = '2,00,02'
In [57]: a.split(',')
Out[57]: ['2', '00', '02']
如果您想将a
转换为ints
列表,同时还要保留前导零,那么您需要跟踪两个列表:
In [65]: astr = a.split(',')
In [66]: astr
Out[66]: ['2', '00', '02']
In [67]: aint = map(int, astr)
In [68]: aint
Out[68]: [2, 0, 2]
In [69]: zip(astr, aint)
Out[69]: [('2', 2), ('00', 0), ('02', 2)]
使用aint
进行数值计算,使用astr
进行字符串格式化/输出。
请注意,Python中的前导0用于表示八进制数:
In [62]: 011
Out[62]: 9
因为11基8是9。
因此,如果字符串为a = '2,011,02'
,那么您需要澄清是否需要等于[2,11,2]
的整数值[2,011,02]
或[2,9,2]
。
In [70]: [2, 011, 02] == [2, 9, 2]
Out[70]: True
如果你的字符串是a = '2,09,02'
,那么如果你将每个数字字符串转换成一个int,你就得到[2, 9, 2]
,但是如果你想要[2, 09, 02]
,那么你就是' d得到SyntaxError
,因为09
不是有效的八进制数。