我一直试图找出这个错误,但我不能。我试图使用变量从文本文件中逐行读取代码,以便在需要时可以到达特定行。
Classroom = input("What classrooms results do you want to see? classone, classtwo or classthree?")
Class = open(Classroom +".txt", "r")
lineno = 0
name = Class.readlines()[lineno]
print(name)
lineno += 1
a = Class.readlines()[lineno]
print(a)
lineno += 1
b = Class.readlines()[lineno]
print(b)
lineno += 1
c = Class.readlines()[lineno]
print(c)
lineno += 1
这是文本文件:
Patrick
6
6
7
James
7
7
7
Tom
5
9
8
Florence
4
9
3
Hannah
2
2
1
如何解决错误?
答案 0 :(得分:2)
readlines
会读到文件的末尾。第二次通话不会给你任何数据。
无需使用readlines
。只需遍历文件本身。
with open(classroom + '.txt') as classdata:
for line in classdata:
print(line)
您可能需要阅读readlines considered silly。
输入文件的布局不明确。来自其他用户的编辑可能错误也可能没有错误。我假设以下
Patrick 6 6 7
James 7 7 7
Tom 5 9 8
如果要在空白处拆分每一行,只需使用split
并打印各个元素。
with open(classroom + '.txt') as classdata:
for line in classdata:
for value in line.split():
print(line)
答案 1 :(得分:0)
Classroom = input("What classrooms results do you want to see? classone, classtwo or classthree?")
with open(Classroom +".txt", "r") as f:
for line in f.readlines():
print line
尽量不要使用像class这样的关键字(虽然你已经使用了Class)。
答案 2 :(得分:0)
首先,数据文件不是最容易被解析的顺序,并且不需要为每个教室分别创建文件。只需将教室名称作为一列包含在一个数据文件中。让测试每列排成一行。我更喜欢使用,或者在我的csv文件中,因为我几乎没有在现实世界中看到空格分隔的文件。
class,student,a,b,c
one,Patrick,6,6,7
one,James,7,7,7
one,Tom,5,9,8
one,Florence,4,9,3
one,Hannah,2,2,1
好了,我们现在有一个规范化的csv文件,让我们使用csv模块来解析它。
import csv
results = []
with open("classone.txt", "r") as classroom:
reader = csv.DictReader(classroom, delimiter=',')
col = reader.fieldnames
reader.next()
for row in reader:
results.append([row['class'], row['student'], row['a'], row['b'], row['c']])
现在数据已加载到列表中,并且您在col变量中有每个内部列表的标题。现在这绝对不是获取数据的最佳方式(对于使用pandas库的大型数据集),但是对于快速和脏访问,您可以这样做。
classroom = input("What classrooms results do you want to see? one, two or three?")
for row in results:
if row[col.index('class')] == classroom:
print row
然后你可以使用col.index()调用中的diff col名称来访问你需要的各种数据。
答案 3 :(得分:-1)
不要使用readlines(),因为当它们在数组中时很难分开。而是使用循环函数并使用read()单独读取每一行。使用:
Classroom = input("What classrooms results do you want to see? classone, classtwo or classthree?")
Class = open(Classroom +".txt", "r")
for x in range(len(Class.readlines())):
name = Class.read()
print(name)