[英]Python string.split more than one value in for loop
基本上這很好用:
>>> x,y = "x=y".split("=")
>>> print x
x
但是這給出了一個錯誤:
>>> for x, y in "x=y".split("="):
... print x
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: need more than 1 value to unpack
我想知道有什么區別,以及我如何解決這個問題。
拆分為“=”會給出兩個值:
"x", "y"
這些值與您的變量名匹配的事實是偶然的。 你也可以這樣做:
x,xx = "x=y".split("=")
我懷疑你可能計划的是列出一個清單:
"foo=bar,blah=boo,etc=something"
拆分它,你可以做到:
for x,y in [ (pair.split("=")) for pair in "foo=bar,blah=boo,etc=something".split(",") ]:
print x,y
但! 雖然它有效,但我認為將它分成單獨的步驟要好得多,因為它更具可讀性:
params = "foo=bar,blah=boo,etc=something"
pair_list = params.split(",")
for pair in pair_list:
x,y = pair.split("=")
...
你可以做到
for x in "x=y".split("="):
# ...
您嘗試的是迭代序列["x", "y"]
,但為序列的每個條目分配x, y
。 這相當於
x, y = "x"
對於第一次迭代,這沒有任何意義。
我不確定你為什么要這樣做,但如果由於某種原因你想為此使用for
循環:
>>> for x, y in ["x=y".split("=")]:
... print x
... print y
...
x
y
因為split函數返回一個列表。 在for循環的上下文中,它一次獲得一個項目。 例如: 'k=y'.split('=')
返回包含['k', 'y']
。 因為它在for循環中你得到'k',然后'y'。
它在for循環之外工作的原因是因為它在for循環中一次看到整個列表而不是一個項目,並且能夠解壓縮它。
要修復它,您可以將數據拆分為for循環外的元組列表,然后循環遍歷。 例如: [('x', 'y'), ...]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.