在Python中以逗号分隔列表查找第N项

时间:2014-12-23 02:35:03

标签: python sorting line comma

我有一个大的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

3 个答案:

答案 0 :(得分:3)

使用列表而不是单独的变量。

values = entry.split(',')
print values[0], values[2]

答案 1 :(得分:0)

只需使用清单:

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

答案 2 :(得分:0)

如果您不想对结果编制索引,那么编写自己的函数来处理存在太少或两个多值的情况并不困难。虽然需要设置更多代码行,但优势在于您可以为结果提供有意义的名称,而不是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