簡體   English   中英

在 Python 中查找逗號分隔列表中的第 N 個項目

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM