【问题标题】:How to replace items in a list, or string?如何替换列表或字符串中的项目?
【发布时间】:2015-01-27 02:13:14
【问题描述】:
def str_to_bin(user_input):
    str_list = list(user_input)

str_to_bin = ('Hello World')

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

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

如果使用列表不是最好的方法,如何替换字符串中的单个字符?

【问题讨论】:

  • 为什么'ah'要转换成'000001'?
  • 或者除了 str_to_bin() 的输出,你还有什么?
  • 你到底想做什么?

标签: python string list replace


【解决方案1】:
>>> 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 函数是一个字符串方法。当您尝试时,究竟是什么没有奏效,您尝试了什么?

【讨论】:

    【解决方案2】:

    我不太确定你在问什么;但是,如果你想说你想通过你的列表并用其他特定值替换值(例如:比如用二进制值“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
    

    【讨论】:

      【解决方案3】:

      我认为这就是您要查找的内容,但需要进一步说明。该函数将字符串中的每个字符转换为二进制值。

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

      【讨论】:

        【解决方案4】:

        我不清楚您的要求到底是什么:- 是将输入字符串中每个字符的二进制值作为列表返回还是返回整个字符串的等效二进制表示。也就是说:- 如果您提供输入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))
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-03-12
          • 1970-01-01
          • 2022-01-02
          • 1970-01-01
          • 2021-12-12
          • 2022-12-10
          相关资源
          最近更新 更多