我目前正在編寫一個Python腳本來處理一些日誌並重新格式化某些部分。部分腳本使用以下代碼(作爲示例):Python:將分割值分配給多個變量
var1,var2,var3=foo.split("|")
哪一個可以正常工作。然而,這也許看起來並不那麼好看(帶走Python的可讀性因素),如果有39個值,例如:
var1,var2,var3,...,var39=foo.split("|")
是否有更好的方式來格式化這個結構呢?
感謝
我目前正在編寫一個Python腳本來處理一些日誌並重新格式化某些部分。部分腳本使用以下代碼(作爲示例):Python:將分割值分配給多個變量
var1,var2,var3=foo.split("|")
哪一個可以正常工作。然而,這也許看起來並不那麼好看(帶走Python的可讀性因素),如果有39個值,例如:
var1,var2,var3,...,var39=foo.split("|")
是否有更好的方式來格式化這個結構呢?
感謝
lst = foo.split("|")
lst[0]
lst[1]
...
使用list
存儲獲得令牌: -
>>> my_str = "Python|Splitting|the|string"
>>> my_tokens = my_str.split("|")
>>>
>>> my_tokens
['Python', 'Splitting', 'the', 'string']
>>> my_token[0]
'Python'
你可以使用字典:
In [29]: strs="foo|bar|spam|eggs"
In [31]: d=dict(("var{0}".format(i),x) for i,x in enumerate(strs.split("|")))
In [32]: d
Out[32]: {'var0': 'foo', 'var1': 'bar', 'var2': 'spam', 'var3': 'eggs'}
In [33]: d['var1']
Out[33]: 'bar'
In [34]: d['var2']
Out[34]: 'spam'
可以分配給不同的變量。和Perl一樣,你只需要在數組中定義它們,所以通過匹配變量和結果的位置完成分配。
下面是我在交互式Python嘗試:
>>> # this is a grep result, btw
... foo = 'config/some.conf:12: title = "Super Me"'
>>> [ filename, line, text ] = foo.split(':')
>>> print text
title = "Super Me"
我喜歡這樣,而不是一本字典或數組,在for
循環特別是工作時。它使得變量名稱更有意義,即使是循環本地的,或者是臨時的。
獲勝的可讀性!
爲什麼你不使用'list'? –
是否有一個特定的原因,你想將它們分配給單個變量? – Ifthikhan