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,以便您獲得對象的正確內部表示。
添加回答
舉報