正在读取文本文件的下一行?

2024-07-03 06:19:00 发布

您现在位置:Python中文网/ 问答频道 /正文

好吧,我已经看了所有其他的问题,但我不太确定如何将我读到的代码应用到我的代码中,我也不确定它是否能起作用。所以我的文本文件是这样的:

NeQua,High,
ImKol,Moderate,
YoTri,Moderate,
RoDen,High,

我的代码能够读取第一行代码并删除部分,但是当我为第二行添加搜索请求时,它就出现了一个错误。那我怎么让它读下一行呢?在

这是我目前掌握的代码:

^{pr2}$

我不太确定如何使用下一个函数。在


Tags: 函数代码错误文本文件highpr2moderatenequa
3条回答

行:

with open ("clientIntensity.txt") as search:

创建一个名为search的文件对象。此文件对象具有many methods,但没有.next()方法。因此,调用.next()会抛出一个错误,内容大致是“您希望我做什么!?”。在


但是,你知道你想做什么,你想迭代每一行,你用一个for循环。for循环的美妙之处在于,在当前迭代结束时,它会自己继续到下一个迭代,直到到达结束为止(这个结束实际上是一个StopIteration)。在

所以,如果你只想继续下一行,就让for循环滚动吧!在

^{pr2}$

最后一个提示。如果您有一个像hello,there,这样的字符串,那么通过切片来提取{}是非常费劲的,但是通过使用string对象的方法,即.split()来提取{}。这允许您通过指定一个清除器来获取子字符串的列表。例如,'hello,there,'.split(',')给出了['hello', 'there', '']。然后您可以用'hello,there,'.split(',')[1]索引第二个单词,给出'there'!在

注意:split方法返回第三个元素的原因是字符串以逗号结尾,因此当以逗号分隔时,结尾处也会返回一个空字符串,但您可以忽略这一点。

您不需要调用next()。您已经在文件的行上迭代了,所以,不要做任何事情,下一行将在下一次迭代时出现。在

elif clientid not in line:
    pass

与文件读取无关:你如果其他人没有意义。clientid in line要么为真,要么为假,因此有3个条件是没有意义的。只需将中间的elif全部删除即可`

for循环已经为您调用了next。在

因为您正在读取一个csv文件(一个值由逗号分隔的文件),所以您应该使用csv模块,它会自动为您拆分每一行,因此您不必自己对每一行进行切片。在

为了进一步帮助您,我还删除了全局变量,并使用参数传递将变量传递给另一个函数。我还删除了对main()的递归调用,并使用一个循环来重复搜索。如果输入空字符串(只需按enter键),它应该退出循环并完成程序。在

import csv

def main():
    print("===================")
    print("=Activity Recorder=")
    print("===================")

    while True:
        clientid=input("Please enter the client ID: ")
        print("")
        if not clientid:
             break
        with open ("clientIntensity.txt") as f:
            search = csv.reader(f, delimiter=',')
            for row in search:
                if row[0] == clientid:
                    idin = row[1]
                    print ("Intensity = ", idin)
                    acti(idin)
                    break
            else:
                print('ERROR: Not found')

def acti(idin):
    if idin == "High":
        print("Activites = Running, Swimming, Aerobics, Football, Tennis")
    elif idin == "Moderate":
        print("Activities = Walking, Hiking, Cleaning, Skateboarding, Basketball")
    else:
        print("ERROR: Unknown idin")

相关问题 更多 >