我有一个文本文件,其中包含几个以标签分隔的关于博客文章的信息列。文件中的每一行代表一篇文章,通过在标签周围分割一行,您可以提取有关该特定文章的ID号,标题,段落和其他内容。
例如:
id articleID title paragraph
1 4 Motorola prototypes from Frog Some cool looking concepts for phones...
所以,我编写了一段代码,将其转换为一个名为 articlesFileList 的列表,其中每一行都是列表中的一个元素,这与你的工作完全一样。期望的。
file = open("articles.txt", "r", encoding="utf-8")
file.readline() # (Skip first line)
articlesFile = file.read()
articlesFileList = articlesFile.split("\n")
在此之后,我将这些行拆分为各自的列并创建 Article 实例,这些实例具有id,title,paragraph等属性。
for line in articlesFileList:
columns = line.split("\t")
article = Article(columns[0], columns[2], columns[3])
articleList = []
articleList.append(article)
但是这段代码会抛出这个错误:
Traceback (most recent call last):
File "E:\Python\RBTrends\RBTrendsAnalysis.py", line 55, in <module>
articlesList = createArticles(articlesFileList)
File "E:\Python\RBTrends\RBTrendsAnalysis.py", line 32, in createArticles
article = Article(columns[0], columns[2], columns[3])
IndexError: list index out of range
我的第一个想法是, columns 列表可能没有包含正确的信息,所以我添加了以下代码来检查该列表中的内容:
for i in columns:
print(i)
......列表看起来绝对完美。每行的每列都正确打印。我甚至试图打印列表中的每个索引,看看是否可以手动访问它们,他们可以。访问列表元素的程序似乎只是在创建类的实例时。
任何帮助/解释都会非常感激,因为这是一个让我困惑一段时间的错误。
答案 0 :(得分:0)
columns
列表中没有足够的项目,并且无法检索不存在的项目。
我可以想象两个原因:
为了测试这个,我会在它失败的行之前添加
assert len(columns) >= 4
当您使用索引3时,您需要包含4个项目的列表。如果列表更短,该行将抛出异常。