[英]Find Nth item in comma separated list in Python
我有一個帶有不同長度的逗號分隔行的大型 CSV。 我在循環中使用split(',')
對另一組數據進行排序以分隔字段,但此方法要求每行具有相同數量的條目。 有沒有辦法可以查看一行,並且與條目總數無關,只需拉出第 N 個項目? 作為參考,我使用的方法僅適用於看起來像AAA,BBB,CCC,DDD
的行
entry = 'A,B,C,D'
(a,b,c,d) = entry.split(',')
print a,b,c,d
但我想拉 A 和 C,即使它看起來像 A、B、C、D、E、F 或 A、B、C。
使用列表而不是單獨的變量。
values = entry.split(',')
print values[0], values[2]
只需使用一個列表:
xyzzy = entry.split(",");
print xyzzy[0], xyzzy[2]
但請注意,一旦您允許可變元素計數的可能性,您可能最好允許太少:
entry = 'A,B'
xyzzy = entry.split(",");
(a,c) = ('?','?')
if len(xyzzy) > 0: a = xyzzy[0]
if len(xyzzy) > 2: c = xyzzy[2]
print a, c
如果您不想索引結果,編寫自己的函數來處理值太少或兩個很多的情況並不難。 雖然它需要幾行代碼來設置,但優點是您可以為結果提供有意義的名稱,而不是像results[0]
和results[2]
這樣的匿名名稱。
def splitter(s, take, sep=',', default=None):
r = s.split(sep)
if len(r) < take:
r.extend((default for _ in xrange(take - len(r))))
return r[:take]
entry = 'A,B,C'
a,b,c,d = splitter(entry, 4)
print a,b,c,d # --> A B C None
entry = 'A,B,C,D,E,F'
a,b,c,d = splitter(entry, 4)
print a,b,c,d # --> A B C D
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.