为清楚起见,我正在尝试将元组转换为字符串,然后将字符串转换回元组,而无需进行任何更改,例如多余的括号。
当我使用这个
#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)
,如何使它打印出来?
答案 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。)
(您的版本将整个元组转换为单个字符串。)