读取文件和编辑文件的某些内容时出现问题

时间:2018-03-28 05:14:50

标签: python file

所以我有一个文件 名字(空格)姓氏(标签)等级

实施例
万达巴伯96

我无法以列表形式阅读此内容,然后编辑该号码。

我目前的代码是,

def TopStudents(n):

    original = open(n)
    contents = original.readlines()
    x = contents.split('/t')

    for y in x[::2]:
        y - 100 
        if y > 0: (????)

这是我感到困惑的地方。我只是想获得得分超过100%的学生的名字和姓氏。我想为符合此资格的学生创建一个新列表,但我不确定如何编写相应的名字和姓氏。我知道我需要采取列表中每个其他位置的步伐,因为奇数将永远是名字和姓氏。提前感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

您的代码有几处出问题:
- 必须关闭打开的文件(#1)
- 必须使用调用它来进行函数调用(#2)
- 使用的拆分使用forwardslash(/)而不是反斜杠()(#3)
- 如果您希望访问所有成员(#4),那么您决定循环使用for循环的方式并不是最佳选择 - for循环以:(#5)为结尾 - 您必须将计算结果存储在某处(#6)

def TopStudents(n):
    original = open(n) #1
    contents = original.readlines #2
    x = contents.split('/t') #3

    for y in x[::2] #4, #5
        y - 100 #6
        if y > 0:

那就是说,固定版本可以是:

original = open(n, 'r')
for line in original:
    name, score = line.split('\t')
    # If needed, you could split the name into first and last name:
    # first_name, last_name = name.split(' ')
    # 'score' is a string, we must convert it to an int before comparing to one, so...
    score = int(score)
    if score > 100:
        print("The student " + name + " has the score " + str(score))
original.close() #1 - Closed the file

注意:我专注于可读性,并附有几条评论,以帮助您理解代码。

答案 1 :(得分:0)

我总是喜欢使用'with open()',因为它会自动关闭文件。为了简单起见,我使用逗号分隔的txt,但你可以用\ t替换逗号。

def TopStudents():
    with open('temp.txt', 'r') as original:
        contents = list(filter(None, (line.strip().strip('\n') for line in original)))
    x = list(part.split(',') for part in contents)
    for y in x:
        if int(y[1]) > 100: 
            print(y[0], y[1])
TopStudents()

这将打开并将所有行作为列表加载到内容中,删除空白行和换行符。然后它分成一个列表列表。

然后遍历x中的每个列表,查找第二个值(y [1]),这是您的等级。如果int()大于100,则打印y的每个段。