拆分()错误:列表索引超出范围

2024-06-23 02:41:42 发布

您现在位置:Python中文网/ 问答频道 /正文

line = "2013/12/10@19:48:25"
datetime = line.split('@')
print datetime[1]

每当我的程序运行时,它就会出错。我不知道为什么。但每当我检查datetime变量时,它就包含这个['2013/12/10','19:48:25],这是正确的。但是我不能用datetime[1]访问第二个元素,它给我一个索引越界的错误,但是我可以访问datetime[0]。有人能告诉我我做错了什么吗?请帮忙,我很困惑,已经没有耐心了。谢谢!在

编辑:这是真正的代码

^{pr2}$

到目前为止,这是我正在做的。在我弄清楚代码有什么问题后,我会继续下去,这就是为什么程序现在看起来毫无意义的原因。在


Tags: 代码程序程序运行元素编辑datetime错误line
2条回答

代码本身似乎是正确的,但是您可以添加两个assert,以确保一切按预期进行。在

line = "2013/12/10@19:48:25"
assert "@" in line          # check that "@" is present there
datetime = line.split('@')
assert len(datetime) == 2   # check that there are 2 elements
print datetime[1]           # then it's safe to take the second element

顺便说一句,使用一个不同的名称而不是datetime,这样可以避免由于隐藏datetime模块名而导致的潜在问题。在

对于那些仍在寻找答案或对我为什么会出错感到奇怪的人来说,这是因为日志文件的文件格式是UNIX文本文件格式。因此,python解析器在解析时会与一些隐藏的特殊字符混淆。我在linux中使用unix2dos命令将日志文件从unix2dos转换为dos后解决了这个问题。在这之后,我的解析器工作得很顺利。在

相关问题 更多 >