格式为:
0
995
112
// there is an empty line here too
所以,我在做:
with open("in.txt") as f:
articles = f.readlines()
for article in articles:
article = int(article.split()[0])
但我得到了:
我认为IndexError:列表索引超出范围
来自访问没有数字的行的[0]
。如何找到(我很有兴趣识别空行,因为这意味着收集当前列表应该停止并为下一个列表做好准备)。
print articles
['0 \n', '995 \n', '\n', '112 \n', '\n']
答案 0 :(得分:3)
with open(in.txt) as f:
articles = [int(line) for line in f.read().splitlines() if line]
如果您使用splitlines
代替readlines
,则会删除\n
字符,因此您只需要检查空字符串
此外,我需要使用上面使用的列表解析将结果存储在articles
变量中。按照您的方式,每次都会覆盖article
变量而不会保存任何内容。
要分隔多个列表中的块,请执行以下操作:
with open(in.txt) as f:
article = []
articles = [article]
for line in f:
line = line.strip()
if not line:
article = []
articles.append(article)
continue
article.append(int(line))
答案 1 :(得分:3)
我建议这样做:
numbers = []
with open('in.txt', 'r') as f:
for line in f:
line = line.split()
try:
numbers.append(int(line[0]))
except IndexError as e:
pass
print numbers
答案 2 :(得分:1)
在尝试访问其中的元素之前,您需要检查您的分割是否返回了一些内容。
temp = article.split()
if temp: #returns false if temp == []
article = int(article.split()[0])