在python中从列表中拆分值时超出范围

时间:2017-11-04 01:24:02

标签: python

我列出了如下字符串:

12345,abcd,03/03/2013,23,,32,EURRIE-373HFJ-DJDMKD|838383,ldof,09/02/2017,23,,32,DJJFJF-DJFH83-JDUEJD|939393,uejs,08/07/2016,23,,32,JDJFJF-UEJDKD-LEPEKD|

我的代码:

content = "12345,abcd,03/03/2013,23,,32,EURRIE-373HFJ-DJDMKD|838383,ldof,09/02/2017,23,,32,DJJFJF-DJFH83-JDUEJD|939393,uejs,08/07/2016,23,,32,JDJFJF-UEJDKD-LEPEKD|"

result = [content.split(',')[2] for content in content.split('|')]
for v in result[:-1]:
  print v

我想要打印所有第二个索引元素

03/03/2013
09/02/2017
08/07/2016

但是我超出范围错误,我在这里做错了什么。

有人可以帮助解决此问题吗

2 个答案:

答案 0 :(得分:2)

当我测试你的代码时,我发现content.split('|')生成了一个空的最后一个元素,它负责分割后的索引错误。所以我改为:

[content.split(',')[2] for content in content.split('|')[:-1]]

得到了:

['03/03/2013', '09/02/2017', '08/07/2016']

这能为您解决问题吗?

答案 1 :(得分:1)

您可以使用re

import re

content = "12345,abcd,03/03/2013,23,,32,EURRIE-373HFJ-DJDMKD|838383,ldof,09/02/2017,23,,32,DJJFJF-DJFH83-JDUEJD|939393,uejs,08/07/2016,23,,32,JDJFJF-UEJDKD-LEPEKD|"
result = re.findall('\d{2}/\d{2}/\d{4}', content)

结果:

for date in result:
    print date

# 03/03/2013
# 09/02/2017
# 08/07/2016

此外,您可以通过在第一次拆分后过滤掉空元素来修复代码:

result = [content.split(',')[2] for content in content.split('|') if len(content)]

结果:

for v in result:
    print v

# 03/03/2013
# 09/02/2017
# 08/07/2016