def str_to_bin(user_input):
str_list = list(user_input)
str_to_bin = ('Hello World')
字符串'Hello World'已经变成了一个列表,因此每个字符都是分开的(因为在字符串中使用replace函数只能替换单词)。但是从这里开始,我不知道如何将字母“啊”更改为“000001”。我尝试了多种方法但似乎没有任何效果。
我也想要一种紧凑的方式,因为很明显将短语转换为二进制需要为每个字符赋值。
如果使用列表执行此操作不是最佳方法,您如何替换字符串中的单个字符?
答案 0 :(得分:0)
>>> myString = "Hello World"
>>> myString.replace("H","F")
"Fello World"
如果你想要二进制文件char(实际上,这里是二进制到int到char)
>>> replaceChar = '00010001' #8 bits
>>> int(replaceChar, 2)
17
>>> chr(int(replaceChar, 2))
'\x11'
replace函数是一个字符串方法。当你尝试它时究竟什么都没有用,你尝试了什么?
答案 1 :(得分:0)
我不太确定你在问什么;但是,如果你想说你要通过你的列表并用其他特定值替换值(例如:比如说,用“二进制值”“01100001”替换“a”之类的字母),那么你可以使用字典和然后只是处理它的方式。以下是我使用二进制示例为您制作的示例:
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()
编辑:此文件的输入和输出将是:
>>> abc
>>> Your new output is:
>>> 011000010110001001100011
答案 2 :(得分: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']
答案 3 :(得分:0)
我不清楚你的要求究竟是什么: - 是否将输入字符串中每个字符的bianry值作为列表返回,或者返回整个字符串的等效bianry表示。即: - 如果您提供输入abc
,则希望在列表中单独返回每个二进制值['1100001', '1100010', '1100011']
或返回等效的二进制表示110000111000101100011
。
但是,一旦你有办法,我认为你可以自己做。
但是,正如您的代码和@ afarber1中所提到的,您甚至不需要将输入字符串单独转换为列表。因此根本不需要以下行: -
str_list = list(user_input)
因为,string被视为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))