2015-01-27 2 views
0
def str_to_bin(user_input): 
    str_list = list(user_input) 

str_to_bin = ('Hello World') 

Строка «Hello World» была преобразована в список, так что каждый символ разделен (поскольку использование функции replace в строках заменяет только слова). Но отсюда я понятия не имею, как изменить букву «а» на, например, «000001». Я попробовал несколько способов, но ничего не работает.Как заменить элементы в списке или строке?

И я тоже хочу компактный путь, потому что, очевидно, преобразование фраз в двоичный файл требует значения для каждого символа.

Если вы делаете это со списком, это не лучший способ, как вы можете заменить отдельные символы в строках?

+4

Почему «ах» следует преобразовать в «000001»? – zhangxaochen

+0

Или что вы, кроме вывода str_to_bin()? –

+0

Что вы пытаетесь сделать, во всяком случае? – skyline75489

ответ

0
>>> myString = "Hello World" 
>>> myString.replace("H","F") 
"Fello World" 

Если вы хотите двоичным на символ (на самом деле, двоичный в целое на символ здесь)

>>> replaceChar = '00010001' #8 bits 
>>> int(replaceChar, 2) 
17 
>>> chr(int(replaceChar, 2)) 
'\x11' 

ЗАМЕНИТЬ функцией является методом строки. Что именно не работает, когда вы пытаетесь это сделать, и что вы пробовали?

0

Я не совсем уверен, что вы просите; однако, если вы пытаетесь сказать, что хотите пройти через свой список и заменить значения другими конкретными значениями (например: Скажите, например, заменить буквы типа «a» их двоичными значениями «01100001»), тогда вы можете использовать словарь и то просто обработайте свой путь через него. Вот пример, который я сделал для вас, используя свой двоичный пример:

dictionary = { 
    'a': "01100001", 
    'b': "01100010", 
    'c': "01100011", 
    'd': "01100100", 
    #etc.. 
    } 
def modify(raw_input): 
    message = '' 
    print("Your new output is: ") 
    for character in raw_input: 
     message += "%s" % (dictionary[character]) 
    print message 

def main(): 
    modify(raw_input()) 
main() 

Edit: Ввод и вывод для этого файла будет:

>>> abc 
>>> Your new output is: 
>>> 011000010110001001100011 
0

Я думаю, что это то, что вы ищете, но дополнительное разъяснение необходимо. Функция преобразует каждый символ в строку в двоичное значение.

def str_to_bin(user_input): 
    str_list = list(user_input) 
    return [format(ord(x), 'b') for x in str_list] 

print str_to_bin('Hello World') 

# OUTPUT 
# ['1001000', '1100101', '1101100', '1101100', '1101111', '100000', '1010111', '1101111', '1110010', '1101100', '1100100'] 
0

Я не ясно, что именно ваше требование: - возвращать ли значение bianry каждого символов во входной строке в виде списка или вернуть эквивалентное bianry представление всей строки. То есть: если вы укажете ввод abc, вы хотите вернуть каждое двоичное значение отдельно в списке как ['1100001', '1100010', '1100011'] или вернуть эквивалентное двоичное представление 110000111000101100011. Однако, я думаю, что вы можете сделать это самостоятельно, как только у вас появится путь.

Но, как указано в вашем коде и @ afarber1, вам даже не нужно преобразовывать входную строку в список отдельно. Таким образом, следующая строка вообще не нужна: -

str_list = list(user_input) 

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

def str_to_bin(user_input): 

    # if you need binary of each character in list 
    return [format(char, 'b') for char in bytearray(user_input)] 

    # if you need equivalent binary representation of the string itself 
    return ''.join(format(char, 'b') for char in bytearray(user_input)) 
Смежные вопросы