如何将字符串转换为非字符串?

时间:2013-11-18 16:41:05

标签: python string

如何在python中将字符串转换为非字符串?

>>> bits=['0100','0011','1110','1001','0100']
>>> a=map(int,bits)
>>> print a

我们将此作为输出

[100, 11, 1110, 1001, 100]

但我们想要这个

[0100,0011,1110,1001,0100]

这可能不使用for循环吗?

2 个答案:

答案 0 :(得分:4)

您必须在打印前格式化每个整数:

print '[' + ', '.join(map(lambda i: format(i, '04d'), a)) + ']'

或使用:

print '[' + ', '.join(bits) + ']'

没有首先将所有字符串转换为整数。

演示:

>>> bits=['0100','0011','1110','1001','0100']
>>> a=map(int,bits)
>>> print '[' + ', '.join(map(lambda i: format(i, '04d'), a)) + ']'
[0100, 0011, 1110, 1001, 0100]
>>> print '[' + ', '.join(bits) + ']'
[0100, 0011, 1110, 1001, 0100]

请注意,如果您的bits字符串是二进制值,则需要将其解释为:

>>> int('0100', 2)
4
>>> format(4, '04b')
'0100'

通过将数字解释为二进制,将一个0和1的字符串转换为整数,并使用4位和0填充将整数转换回二进制字符串表示。

答案 1 :(得分:1)

不是使用Python的默认实现来打印列表,而是可以自己动手:

>>> bits=['0100','0011','1110','1001','0100']
>>> print '[' + ','.join(bits) + ']'
[0100,0011,1110,1001,0100]

在这种情况下,因为bits列表中的项目已经填充并且是字符串,所以没有理由在任何时候转换为int或任何其他数据类型。

如果你真的想要一个填充的数字列表,那么你的原始代码就足够了。它可能不会向左显示0,但由于它们是数字,因此您不需要它们。