【问题标题】:Going to a specific position in a file转到文件中的特定位置
【发布时间】:2016-02-06 23:54:04
【问题描述】:

我对 python 还很陌生。我一直在做一个我最近一直在努力的项目,如果我能得到一些帮助,我会很高兴。

我正在执行一个程序,该程序将从用户那里获取输入,并查看是否在文件中看到输入。输入是名称标签,例如用户必须输入一个独特的代码,如“t56700”,然后程序将查看该代码是否在文件中。但是,随着代码附带其他信息。

我需要做的是接受用户输入,如果它有效,我需要跳转到该输入在文件中的位置并打印代码(名称标签)以及所有信息它。

文件如下所示:

姓名标签,x,x,x

姓名标签,x,x,x

姓名标签,x,x,x

^ 这几行

到目前为止,这是我的代码,我试图找到用户输入在文件上的显示位置,并连同它一起打印信息。

file = open("filetest.txt","r").readlines()


nametag = input ("What is your name tag?")

if nametag in open('filetest.txt').read():

    with open('filetest.txt', 'r') as searchfile:

        for line in searchfile:
                    if nametag in line:



                        print ("nametag: " + nametag)
                        print ("xxxx ", line[2])
                        print("xxxx:",line[3])
                        print("xxxx:",line[1])
                        print("xxxx:",line[4])

                        break 

例如,方括号中的数字(例如“line[2]”)仅将我带到文件的开头,而不是我想要读取文件的位置。

【问题讨论】:

  • 我建议,在您的循环中,您执行 line.split(',') 以获取看起来像 ['nametag', 'x', 'x', 'x'] 的每一行的数组,然后在您的 if 中检查 nametag == line[0] (或不管你怎么称呼数组)。目前line[2] 将是该行的第三个字符,而不是第二个“项目”。
  • 非常感谢兄弟,真的很有帮助!

标签: python file search


【解决方案1】:

首先,您不需要打开并读取文件三次 - 一次就足够了。

数据似乎是 CSV 格式,因此您可以使用 csv 模块来帮助解析文件。

import csv

nametag = input("What is your name tag?")

with open('filetest.txt') as searchfile:
    reader = csv.reader(searchfile)
    for row in reader:
        for row[0] == nametag:
            print("nametag: {}".format(nametag))
            print("xxxx: {}".format(row[2]))
            print("xxxx: {}".format(row[3]))
            print("xxxx: {}".format(row[1]))
            break    # if you want the first one only

这假定文件包含 4 列数据,如示例中所示。请记住,列号从 0 开始。

如果你不想使用csv模块,你可以使用str.split()达到类似的效果:

with open('filetest.txt') as searchfile:
    for line in searchfile:
        row = line.split(',')
        for row[0] == nametag:
            ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-14
    • 1970-01-01
    • 2011-08-24
    • 2018-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多