如何在python中收集特定输入元素的数据?

2024-09-30 16:39:11 发布

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

我在一个名为data.txt的文本文件中有这些数据

P005 NY 18/05/2021 23 40
P011 HK 16/05/2021 23 33
P023 TK 15/05/2021 24 41
P023 TK 15/05/2021 20 30

第一列是气象站代码,第二列是站名缩写,第三列是日期,第四列是温度,第五列是降雨量。(请注意,这些列没有标题)

我导入此文本并将其存储在五个列表中

然后我要求用户输入气象站代码,我可以输出从该站收集的数据。这就是我被卡住的地方

特别是,例如,如果用户输入P023,则我的输出应为

TK 15/05/2021 24 41
TK 15/05/2021 20 30

我需要帮助,这样我才能得到正确的输出。我的尝试如下

infile = open("data.txt",'r') 
assert isinstance(infile, object)
data = infile.read()
infile.close()
lines = data.split("\n")   

Station_ID = []
Station_Name = []
Date_Time = []
Temperature = []
Rainfall = []


for line in lines:         
               
    record = line.split( )
    Station_ID.append((record[0]))
    Station_Name.append(record[1])
    Date_Time.append(record[2])
    Temperature.append(record[3])
    Rainfall.append(record[4])
    

loop= True
while loop:         
    
    Choice = input("Press 1 to enter code")
     
    if Choice==1:
    
        RequestID = input("Enter valid Weather Station ID Code: ")

        # it is at this point where i have no clue what i have to do
                if RequestID in Station_ID:
                print (index, (value1, value2, value3, value4,) in enumerate(zip(Station_Name, Date_Time, Temperature, Rainfall))
                    
        
    elif choice%=2:
        print ("you will now exit")
    

Tags: nameintxtiddatadatetimerecord
3条回答

由于您已经将这些详细信息存储为列表,因此可以使用Station_ID的索引查找所需的详细信息

if RequestID in Station_ID:
                 indx=Station_ID.index(RequestID)
                 print(Station_Name[indx],Date_Time[indx],Temperature[indx],Rainfall[indx])

我建议您使用defaultdictfrom collections模块,其中默认为列表:

from collections import defaultdict
data_dict = defaultdict(list)

并将数据存储在那里:

infile = open("data.txt",'r') 
assert isinstance(infile, object)
data = infile.read()
infile.close()
lines = data.split("\n")

for line in lines:         
    record = line.split( )
    station, rest = record[0], record[1:]
    data_dict[station].append(rest)

因此data_dict的结构如下:

defaultdict(list,
            {'P005': [['NY', '18/05/2021', '23', '40']],
             'P011': [['HK', '16/05/2021', '23', '33']],
             'P023': [['TK', '15/05/2021', '24', '41'],
              ['TK', '15/05/2021', '20', '30']]})

然后您可以按关键站访问数据:

data_dict['P023']
#=> [['TK', '15/05/2021', '24', '41'], ['TK', '15/05/2021', '20', '30']]

至少在这种情况下,这种愚蠢的做法应该奏效

import numpy as np
path = 'yourpath\data.txt'


infile = open(path,'r') 
assert isinstance(infile, object)
data = infile.read()
infile.close()
lines = data.split("\n")   

Station_ID = []
Station_Name = []
Date_Time = []
Temperature = []
Rainfall = []


for line in lines:         
               
    record = line.split( )
    Station_ID.append((record[0]))
    Station_Name.append(record[1])
    Date_Time.append(record[2])
    Temperature.append(record[3])
    Rainfall.append(record[4])
    
result=[];

Choice = input("Press 1 to enter code: ")
     
if int(Choice) == 1:
    
    RequestID = input("Enter valid Weather Station ID Code: ")
    
    # it is at this point where i have no clue what i have to do
    
    for i in range(len(Station_ID)):
        
        if RequestID == Station_ID[i]:
            result=np.append(result, [Station_Name[i]+' '+Date_Time[i]+' '+Temperature[i]+' '+Rainfall[i]])
    
    print(result)

else:
    print ("you will now exit")

相关问题 更多 >