如何替换列表中的项目或字符串?

时间:2015-01-27 02:13:15

标签: python string list replace

def str_to_bin(user_input):
    str_list = list(user_input)

str_to_bin = ('Hello World')

字符串'Hello World'已经变成了一个列表,因此每个字符都是分开的(因为在字符串中使用replace函数只能替换单词)。但是从这里开始,我不知道如何将字母“啊”更改为“000001”。我尝试了多种方法但似乎没有任何效果。

我也想要一种紧凑的方式,因为很明显将短语转换为二进制需要为每个字符赋值。

如果使用列表执行此操作不是最佳方法,您如何替换字符串中的单个字符?

4 个答案:

答案 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))