数字字符串到数字转换列表

时间:2014-08-26 17:38:16

标签: python string list int type-conversion

我有一个字符串

a = 2,00,02

此字符串的每个元素都具有数据类型str

我想将其转换为a = [2, 00, 02]之类的列表,因此alist且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。 我该怎么做?

1 个答案:

答案 0 :(得分:1)

000的号码相同。

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不是有效的八进制数。