【问题标题】:Replace spaces in a list替换列表中的空格
【发布时间】:2019-07-26 15:20:12
【问题描述】:

我想替换 my_string

my_string = '[[4.6, 4.3, 4.3], [8.75, 5.6, 6.6], [4.6, 4.3, 4.3]]'

这样它会给出这样的结果

my_string = '4.6x4.3x4.3 8.75x5.6x6.6 4.6x4.3x4.3'

我已经尝试过了,但这也用“x”填充了空白空间

mystring = mystring.replace("[","").replace("]","").replace(", ","x")

有没有更好的pythonic方法来做到这一点?

【问题讨论】:

    标签: python python-3.x string replace formatting


    【解决方案1】:

    你可以用这个:

    import ast
    str = '[[4.6, 4.3, 4.3], [8.75, 5.6, 6.6], [4.6, 4.3, 4.3]]'
    my_list = ast.literal_eval(str)
    result = ' '.join(['x'.join("{}".format(item) for item in sub_list) for sub_list in my_list])
    print(result)
    

    【讨论】:

      【解决方案2】:

      您可以使用正则表达式来提取子列表的内容:

      import re
      
      s = '[[4.6, 4.3, 4.3], [8.75, 5.6, 6.6], [4.6, 4.3, 4.3]]'
      
      ' '.join(i.replace(', ', 'x') for i in re.findall(r'\[([^\[\]]+)\]', s))
      # 4.6x4.3x4.3 8.75x5.6x6.6 4.6x4.3x4.3
      

      【讨论】:

        【解决方案3】:

        你可以直接使用eval而不需要import ast。

        my_string = '[[4.6, 4.3, 4.3], [8.75, 5.6, 6.6], [4.6, 4.3, 4.3]]'
        my_list = eval(my_string)
        result = ' '.join(['x'.join("{}".format(item) for item in sub_list) for sub_list in my_list])
        

        输出

        '4.6x4.3x4.3 8.75x5.6x6.6 4.6x4.3x4.3'
        

        【讨论】:

          【解决方案4】:

          ], 拆分它,然后做你已经在做的事情:

          my_string = '[[4.6, 4.3, 4.3], [8.75, 5.6, 6.6], [4.6, 4.3, 4.3]]'
          
          for e in my_string.split("],"):
              print(e.replace("[","").replace("]","").replace(", ","x"), end = "")
          

          输出

          4.6x4.3x4.3 8.75x5.6x6.6 4.6x4.3x4.3
          

          【讨论】:

            【解决方案5】:

            试试这个:

            import ast
            my_string = '[[4.6, 4.3, 4.3], [8.75, 5.6, 6.6], [4.6, 4.3, 4.3]]'
            mystring = " ".join(["x".join([str(k) for k in i]) for i in ast.literal_eval(my_string)])
            # mystring = '4.6x4.3x4.3 8.75x5.6x6.6 4.6x4.3x4.3'
            

            【讨论】:

            • 一些更好的命名可以在这里大有帮助。用sublist 代替inum 代替k 怎么样?除此之外,+1
            猜你喜欢
            • 1970-01-01
            • 2020-02-05
            • 1970-01-01
            • 1970-01-01
            • 2021-02-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-03-11
            相关资源
            最近更新 更多