【问题标题】:Remove items from a tuple in string format [duplicate]从字符串格式的元组中删除项目[重复]
【发布时间】:2019-03-14 06:24:57
【问题描述】:

这是我的字符串

a = '(20.0, 8.0, 8.0, 37.0)'

我只想要这种格式的前三个项目

str = 20.0x8.0x8.0 

并将最后一项存储在列表中。

leftover = [37.0]

之前我的字符串只有三个维度,所以我多次使用替换函数来转换它。

converted = str(''.join(str(v) for v in a)).replace("(","").replace(")","").replace(", ","x")

我知道这不是最 Pythonic 的方式,但它起到了作用。但我不知道如何从 str(tuple) 中删除一个元素

【问题讨论】:

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


    【解决方案1】:

    使用ast.literal_eval:

    import ast
    
    a = '(20.0, 8.0, 8.0, 37.0)'
    
    a_tupl = ast.literal_eval(a)
    
    string = 'x'.join(map(str, a_tupl[:3]))  # 20.0x8.0x8.0
    leftover = [a_tupl[-1]]  # [37.0]
    


    不要将您的变量命名为str,因为它会影响内置变量。

    【讨论】:

    • 呀呀!我不会把它命名为“str”,只是为了问这个问题.. 谢谢:)
    【解决方案2】:

    试试这个:

    from ast import literal_eval
    str1 = "x".join([str(k) for k in literal_eval(a)[:3]])
    leftover = [literal_eval(a)[-1]]
    

    输出:

    '20.0x8.0x8.0'
    [37.0]
    

    不导入ast:

    str1 = "x".join([k for k in a.replace("(","").replace(")","").split(",")[:3]])
    leftover = [float(a.replace("(","").replace(")","").split(",")[-1])]
    

    【讨论】:

      【解决方案3】:

      您可以在拆分后的字符串上使用简单的 LC 从元组的字符串表示中获取值列表。
      没有库,只是一个简单的 python oneliner...:

      a = '(20.0, 8.0, 8.0, 37.0)'
      
      l = [float(v) for v in a[1:-1].split(',')]
      # [20.0, 8.0, 8.0, 37.0]
      

      那么就很容易创建你需要的两个结果:

      str('x'.join([str(v) for v in l[:3]]))
      # '20.0x8.0x8.0'
      
      [l[-1]]
      # [37.0]
      

      【讨论】:

        猜你喜欢
        • 2017-12-04
        • 1970-01-01
        • 2012-09-15
        • 2023-04-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多