3 回答
TA贡献1829条经验 获得超7个赞
然后就这样做:
`print(stri)`
稍后将此字符串转换为元组,您必须像这样使用模块文字 eval :
from ast import literal_eval
print(literal_eval(stri))
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,)
。最后,它调用print
which 将您的 1 元素元组转换为该元组的字符串表示形式:"('(480L, 640L, 3L)',)"
并打印它。这回答了你问题的第一部分。
很明显,您希望stri = str(tuple_list)
做一些与它不同的事情。但是从您的问题中不清楚您期望什么输出。问题是“(480L, 640L, 3L):
我如何让它打印这个?” 但你已经知道答案了,因为这是print tuple_list
你的问题所说的输出。那么你真正期望的输出是什么?
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,以便您获得对象的正确内部表示。
添加回答
举报