0

如果我有一个文本文件,例如:

     StudentA:
      10
      20
      30
      40

      StudentB:
      60
      70 
      80
      90

我想做一个功能:

    def read_file(file,student):
        file=file.open('file.txt','r')

当我调用它时,

     read_file(file,StudentA)

它将显示如下列表:

    [10,20,30,40]

如何使用 while 循环来做到这一点?

4

2 回答 2

2

我不知道你为什么要阅读 using whilefor-loop会很好。但这是一种读取文件的pythonic方法。

with open(...) as f:
    for line in f:
        <do something with line>

with语句处理打开和关闭文件,包括是否在内部块中引发异常。将for line in f文件对象f视为可迭代对象,它会自动使用缓冲 IO 和内存管理,因此您不必担心大文件。

于 2012-11-26T06:36:10.037 回答
1

请记住,StackOverflow 不是代码编写服务。通常,在您尝试编写自己的答案之前,我不会做这样的事情,但是今天有人帮了我一个忙,本着这种精神,我正在传递善意。

import re

def read_file(filename, student):
    with open(filename, 'r') as thefile:
        lines = [x.strip().upper() for x in thefile.readlines()]
    if student[-1] != ':':
        student += ':'
    current_line = lines.index(student.upper()) + 1
    output = []
    while current_line < len(lines) and re.search('^\d+$', lines[current_line]):
        output.append(int(lines[current_line]))
        current_line += 1
    return output
于 2012-11-26T06:39:10.823 回答