为了账号安全,请及时绑定邮箱和手机立即绑定

为什么python中的tuple()函数返回很多括号

为什么python中的tuple()函数返回很多括号

catspeake 2021-10-19 15:23:24
需要明确的是,我正在尝试将元组转换为字符串,然后将字符串转换回元组,而无需进行任何更改,例如额外的括号。当我使用这个#Creates and prints an tupletuple_list = (480L, 640L, 3L)print tuple_list它打印 (480L, 640L, 3L)但是当我使用#Converts the tuple to string and then prints the tuple form of the stringstri = str(tuple_list)print tuple([stri])它打印 ('(480L, 640L, 3L)',)为什么不打印这个(480L, 640L, 3L),我如何让它打印这个?
查看完整描述

3 回答

?
千巷猫影

TA贡献1829条经验 获得超7个赞

然后就这样做:

`print(stri)`

稍后将此字符串转换为元组,您必须像这样使用模块文字 eval :

from ast import literal_eval

print(literal_eval(stri))


查看完整回答
反对 回复 2021-10-19
?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

这一行:

print tuple_list

将元组转换为字符串表示并将其显示在屏幕上。

(480L, 640L, 3L)

如果您打印字符串文字“(400”,如下所示:print "(400"那么您将看到

(480

屏幕上。同样,元组的字符串表示(480L, 640L, 3L)是 string "(480L, 640L, 3L)"

这一行:

stri = str(tuple_list)

还创建 的字符串表示(480L, 640L, 3L)并将其存储在变量中stri。如果那时您这样做,print stri您将获得与原始输出相同的输出。但是你的代码会这样做:

print tuple([stri])

这在一行中完成了三件事。首先,它创建一个包含一个元素的列表[stri]。然后它调用tuple()which 将 1-element 列表转换为 1-element tuple (stri,)。最后,它调用printwhich 将您的 1 元素元组转换为该元组的字符串表示形式:"('(480L, 640L, 3L)',)"并打印它。这回答了你问题的第一部分。

很明显,您希望stri = str(tuple_list)做一些与它不同的事情。但是从您的问题中不清楚您期望什么输出。问题是“(480L, 640L, 3L):我如何让它打印这个?” 但你已经知道答案了,因为这是print tuple_list你的问题所说的输出。那么你真正期望的输出是什么?


查看完整回答
反对 回复 2021-10-19
?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

这个:


stri = str(tuple_list)

print tuple([stri])

首先创建 的字符串表示tuple_list,然后创建一个包含该字符串作为单个元素的列表,然后tuple从该列表构建一个(与单个元素具有相同的字符串),最后打印该元组的表示。如果你把它分解,这是这样做的(print在每个步骤中添加语句以使事情更清楚):


stri = str(tuple_list)

print("stri: '{}'".format(repr(stri)))

lst = [stri]

print("lst: '{}'".format(repr(lst)))

tup = tuple(lst)

print("tup: '{}'".format(repr(tup)))

print(tup)

我需要元组形式,但是如果我尝试将其转换回来,就会出现这个问题。


ast.literal_eval()那么你想要:


>>> import ast

>>> tup = ("a", "b", "c")

>>> stri = str(tup)

>>> stri

"('a', 'b', 'c')"

>>> result = ast.literal_eval(stri)

>>> result

('a', 'b', 'c')

注意:请注意,这仅适用于包含文字常量的元组。


附带说明:在print用于检查对象时,请使用print repr(obj),而不是print obj,以便您获得对象的正确内部表示。


查看完整回答
反对 回复 2021-10-19
  • 3 回答
  • 0 关注
  • 249 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信