2013-11-18 5 views
0

как преобразовать строку в строку не в python?Как преобразовать строку в строку?

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

мы имеем это как выход

[100, 11, 1110, 1001, 100] 

, но мы хотим, чтобы это

[0100,0011,1110,1001,0100] 

это возможно Whithout используя для петель?

+0

У вас есть целые числа, вам придется переформатировать их как строки с заполнением. –

+0

Для чего вам это нужно? Целое число с ведущими нулями ничем не отличается от них. –

+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' 

Это преобразует строку нулей и в целое число, интерпретируя цифры как двоичные и преобразуя целое число обратно в двоичное строковое представление, используя 4 цифры и 0-дополнение.

1

Вместо реализацию Python по умолчанию для печати списка, вы можете свернуть свой собственный:

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

В этом случае, так как элементы внутри bits списка уже проложенные и являются строками, нет никаких оснований конвертировать в ints или любой другой тип данных в любой момент.

Если вы буквально хотите список заполняемых номеров, то ваш исходный код будет достаточным. Он может не отображать 0s слева, но поскольку они являются числами, они вам не нужны.

Смежные вопросы