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

时间:2019-01-24 10:20:17

标签: python string python-2.7 tuples

为清楚起见,我正在尝试将元组转换为字符串,然后将字符串转换回元组,而无需进行任何更改,例如多余的括号。

当我使用这个

#Creates and prints an tuple
tuple_list = (480L, 640L, 3L)
print tuple_list

它打印(480L, 640L, 3L)

但是当我使用

#Converts the tuple to string and then prints the tuple form of the string
stri = str(tuple_list)
print tuple([stri])

它打印('(480L, 640L, 3L)',)

为什么不打印(480L, 640L, 3L),如何使它打印出来?

5 个答案:

答案 0 :(得分:0)

然后执行以下操作:

`print(stri)`

然后在以后将此字符串转换为元组时,必须使用模块文字eval:

from ast import literal_eval

print(literal_eval(stri))

答案 1 :(得分:0)

此:

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')

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

请注意:在使用print检查对象时,请使用print repr(obj),而不要使用print obj,以便获得对象的正确内部表示。

答案 2 :(得分:0)

此行:

print tuple_list

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

(480L, 640L, 3L)

如果您打印字符串文字“(400),像这样:print "(400",那么您将看到

(480
屏幕上的

。同样,元组(480L, 640L, 3L)的字符串表示形式是字符串"(480L, 640L, 3L)"

此行:

stri = str(tuple_list)

还会创建一个(480L, 640L, 3L)的字符串表示形式,并将其存储在变量stri中。如果此时您进行print stri,则将获得与原始输出相同的输出。但是您的代码会执行以下操作:

print tuple([stri])

那一行可以做三件事。首先,它创建一个元素[stri]的列表。然后调用tuple(),将1元素列表转换为1元素元组(stri,)。最后,它调用print,将您的1元素元组转换为该元组的字符串表示形式:"('(480L, 640L, 3L)',)"并进行打印。回答了您问题的第一部分。

很明显,您期望stri = str(tuple_list)做其他事情。但是从您的问题尚不清楚您期望什么输出。问题说:“ (480L, 640L, 3L):如何使它打印出来?”但您已经知道答案了,因为这就是您的问题所说的print tuple_list的输出。那么您真的期望什么输出?

答案 3 :(得分:0)

如果要将元素类型更改为字符串。

tuple(map(str, a))

答案 4 :(得分:-1)

您对所需的内容并不完全清楚。您认为stri = str(tuple_list)会做什么?我怀疑您想要将元组的每个元素分别转换为字符串:

>>> stri = tuple(str(element) for element in tuple_list)

然后给出我认为您想要的元组:

>>> print stri

('480', '640', '3')

(还请注意,您使用的是长整数的Python 2.x语法,这可能是不必要的。您可能正在从一个非常古老的资源中学习Python。)

(您的版本将整个元组转换为单个字符串。)