首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Python中查找逗号分隔列表中的第N项

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

Stack Overflow用户
提问于 2014-12-23 10:35:03
回答 3查看 5.5K关注 0票数 2

我有一个很大的csv,其中包含不同长度的逗号分隔行。对另一组数据进行排序我在循环中使用了split(',')来分隔字段,但此方法要求每行具有相同数量的条目。有没有一种方法,我可以查看一行,而不考虑条目的总数,只提取第N项?作为参考,我使用的方法只适用于看起来像AAA,BBB,CCC,DDD的行

代码语言:javascript
复制
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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-12-23 10:37:49

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

代码语言:javascript
复制
values = entry.split(',')
print values[0], values[2]
票数 4
EN

Stack Overflow用户

发布于 2014-12-23 10:38:08

只需使用列表即可:

代码语言:javascript
复制
xyzzy = entry.split(",");
print xyzzy[0], xyzzy[2]

但请注意,一旦您允许可变元素计数的可能性,您可能最好允许太少:

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2014-12-23 11:06:35

如果您不想索引结果,那么编写自己的函数来处理值太少或两个太多的情况并不困难。虽然它需要更多的代码行来设置,但一个优点是您可以为结果提供有意义的名称,而不是像results[0]results[2]这样的匿名名称。

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27613304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档