Python 以字符串格式从元组中删除项

Python 以字符串格式从元组中删除项,python,python-3.x,formatting,tuples,string-formatting,Python,Python 3.x,Formatting,Tuples,String Formatting,这是我的绳子 a = '(20.0, 8.0, 8.0, 37.0)' 我只想要这种格式的前三项 str = 20.0x8.0x8.0 并将最后一项存储在列表中 leftover = [37.0] 之前我在字符串中只有三个维度,所以我多次使用replace函数来转换它 converted = str(''.join(str(v) for v in a)).replace("(","").replace(")","").replace(", ","x") 我知道这不是最像蟒蛇的方式,但它

这是我的绳子

a = '(20.0, 8.0, 8.0, 37.0)'
我只想要这种格式的前三项

str = 20.0x8.0x8.0 
并将最后一项存储在列表中

leftover = [37.0]
之前我在字符串中只有三个维度,所以我多次使用replace函数来转换它

converted = str(''.join(str(v) for v in a)).replace("(","").replace(")","").replace(", ","x")
我知道这不是最像蟒蛇的方式,但它确实起到了作用。但是我不知道如何从strtuple中删除元素

使用ast.literal\u eval:

不要将变量命名为str,因为它会隐藏内置变量。

尝试以下操作:

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

不导入ast:


您可以在拆分的字符串上使用简单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]

哎呀!我不想把它命名为str,只是想问个问题。。谢谢你:
str1 = "x".join([k for k in a.replace("(","").replace(")","").split(",")[:3]])
leftover = [float(a.replace("(","").replace(")","").split(",")[-1])]
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]