以字符串格式从元组中删除项目[重复]

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]

以上是关于以字符串格式从元组中删除项目[重复]的主要内容,如果未能解决你的问题,请参考以下文章

查询 Python 字典以从元组中获取值

我可以像在 for 循环中从数组中索引项目一样从元组中检索项目吗?

从元组中提取向量

从元组列表中格式化 JSON 字符串的更 Pythonic 方式

从元组中的字典创建数据框

从元组中提取向量