如何在python中将字符串转换为非字符串?
>>> bits=['0100','0011','1110','1001','0100']
>>> a=map(int,bits)
>>> print a
我们将此作为输出
[100, 11, 1110, 1001, 100]
但我们想要这个
[0100,0011,1110,1001,0100]
这可能不使用for循环吗?
答案 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,但由于它们是数字,因此您不需要它们。