以字符串格式从元组中删除项目[重复]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了以字符串格式从元组中删除项目[重复]相关的知识,希望对你有一定的参考价值。
这个问题在这里已有答案:
这是我的字符串
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(元组)中删除元素
答案
使用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]
Don't name your variable as
str
, because it shadows the built-in.
另一答案
试试这个 :
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])]
另一答案
您可以对分割的字符串使用简单的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]
以上是关于以字符串格式从元组中删除项目[重复]的主要内容,如果未能解决你的问题,请参考以下文章
我可以像在 for 循环中从数组中索引项目一样从元组中检索项目吗?