【问题标题】:IndexError - Appending to a list twiceIndexError - 两次附加到列表
【发布时间】:2022-01-15 14:28:18
【问题描述】:

下面的代码出现错误。我文件中的第三个索引是 Web 服务器日志的时间。我想将它附加到空列表中。 无论使用什么信息,我尝试附加的第二个值总是会出现此错误。有什么建议可以解决这个问题吗? 代码:

nasa = open('NASA_access_log_Jul95')
import statistics

dns = []
loginTime = []

for lineOne in nasa:
    split_data = lineOne.split(" ")
    dns.append(split_data[0])
    loginTime.append(split_data[3])

freq = statistics.mode(dns)
least = min(dns)

print(freq)
print(loginTime)

- 确切错误:

Traceback (most recent call last):
  File "/Users/technomancer/PycharmProjects/Akhters_DATA_Parsing/main.py", line 12, in <module>
    loginTime.append(split_data[3])
IndexError: list index out of range

- Nasa 文本文件的示例行

199.72.81.55 - - [01/Jul/1995:00:00:01 -0400] "GET /history/apollo/ HTTP/1.0" 200 6245
unicomp6.unicomp.net - - [01/Jul/1995:00:00:06 -0400] "GET /shuttle/countdown/ HTTP/1.0" 200 3985
199.120.110.21 - - [01/Jul/1995:00:00:09 -0400] "GET /shuttle/missions/sts-73/mission-sts-73.html HTTP/1.0" 200 4085

【问题讨论】:

  • 请提供完整的错误信息。分割线中可能没有第 4 项?
  • 请从文件“NASA_access_log_Jul95”中复制粘贴示例行。
  • " 无论使用什么信息,我尝试附加的第二个值总是会出现此错误。"得到 what 错误?当您尝试debug 代码时发生了什么?比如发生错误时split_data的值是多少?它有多少元素?使用03 作为索引有意义吗?为什么?
  • 请不要使用评论部分为您的问题添加其他信息。相反,请单击 Edit 链接并编辑您的帖子。像格式化代码一样格式化文件内容和错误回溯。

标签: python append index-error


【解决方案1】:

您可以根据自己的数据编写类似的内容。您的输入在开头和结尾有几个换行符。如果您也想包含它,您可能需要在附加之前检查if len(split_data) &gt; 1

nasa = open('NASA_access_log_Jul95')
import statistics

dns = []
loginTime = []

for line in nasa.read().split("\n"):
     split_data = line.split(" ")
     if len(split_data) > 1:
         dns.append(split_data[0])
         loginTime.append(split_data[3])

freq = statistics.mode(dns)
least = min(dns)

print(freq)
print(loginTime)

【讨论】:

  • 成功了,谢谢!
猜你喜欢
  • 2019-11-25
  • 1970-01-01
  • 2017-01-28
  • 2011-10-14
  • 1970-01-01
  • 2020-01-18
  • 2012-12-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多