从字符串格式的元组中删除项目
Remove items from a tuple in string format
这是我的字符串
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)
中删除一个元素
使用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
,因为它隐藏了内置变量。
试试这个:
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...:[=12=]
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]
这是我的字符串
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)
中删除一个元素使用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
,因为它隐藏了内置变量。
试试这个:
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...:[=12=]
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]