簡體   English   中英

轉到文件中的特定位置

[英]Going to a specific position in a file

我是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]”)僅將我帶到文件的開頭,而不是我要從中讀取文件的位置。

首先,您不需要打開和讀取文件三遍-一次就足夠了。

數據顯示為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:
            ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM