[英]How do you collect data for a specific input element in 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")
我不知道你真正想要實現什么,但如果它符合你的需要,你可以嘗試以下方法:
from collections import defaultdict
with open('data.txt', 'r') as f:
data = f.readlines()
data_dict = defaultdict(list)
for line in data:
l = line.split()
data_dict[l[0]].append(' '.join(l[1:]))
search_info = input("Provide station ID: ")
for station_ID, infos in data_dict.items():
if station_ID == search_info:
print(infos)
輸出:
Provide station ID: P023
['TK 15/05/2021 24 41', 'TK 15/05/2021 20 30']
我建議您使用集合模塊中的defaultdict ,其中默認值是一個列表:
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']]})
然后就可以通過key station訪問數據了:
data_dict['P023']
#=> [['TK', '15/05/2021', '24', '41'], ['TK', '15/05/2021', '20', '30']]
由於您已經將這些詳細信息存儲為列表,因此可以使用 Station_ID 的索引來查找所需的詳細信息,
if RequestID in Station_ID:
indx=Station_ID.index(RequestID)
print(Station_Name[indx],Date_Time[indx],Temperature[indx],Rainfall[indx])
下面的應該工作,至少在這種情況下
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")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.