需要帮助将排序日期和python中的高度

问题描述 投票:0回答:2

根据文本信息,我需要找到每天最低和最高潮位(米)并将其打印到屏幕上每天。

Thursday 4 January,11.58,0.38 meters
Thursday 4 January,16.95,0.73 meters
Thursday 4 January,23.68,0.02 meters
Friday 5 January,6.48,0.83 meters
Friday 5 January,12.42,0.33 meters
Friday 5 January,17.92,0.75 meters
Saturday 6 January,0.5,0.02 meters
Saturday 6 January,7.18,0.85 meters
Saturday 6 January,13.2,0.29 meters
Saturday 6 January,18.82,0.75 meters

期望的结果是这样的:

Thursday 4 January: 0.02 meters at lowest and 0.73 meters at highest
friday 5 January: 0.33 meters at lowest and 0.83 meters at highest

我设法调用txt文件并以所需格式打印,但我不知道如何将其排序为该格式。

aFile = open('C:\\Users\\User\\PycharmProjects\\Tides.txt')
for line in aFile:
    line = line.strip()
    line = line.replace('meters', '')
    print(f": {[line]}")

请帮忙,python初学者在这里

python
2个回答
1
投票

使用csvcollections模块。

例如:

import csv
from collections import defaultdict

result = defaultdict(list)

with open(filename) as infile:
    reader = csv.reader(infile)
    for line in reader:
        result[line[0]].append(float(line[2].strip("meters")))

for k, v in result.items():
    print("{}: {} meters at lowest and {} meters at highest".format(k, min(v), max(v)))

输出:

Saturday 6 January: 0.02 meters at lowest and 0.85 meters at highest
Friday 5 January: 0.33 meters at lowest and 0.83 meters at highest
Thursday 4 January: 0.02 meters at lowest and 0.73 meters at highest

0
投票

试试这个 :

aFile = open('tides.txt')
d = {}
for line in aFile:
    line = line.strip()
    line = line.replace('meters', '')
    # After this split the line wrt ,
    line = line.split(',')
    # Assign the day as key and the the tide height as value inside value list 
    if line[0] in d:
        d[line[0]].append(line[-1])
    else:
        d[line[0]] = [line[-1]]
for k in d:
    print(k, ":", min(d[k]), " meters at lowest and ", max(d[k]), " meters at highest")

输出:

Thursday 4 January : 0.02   meters at lowest and  0.73   meters at highest
Friday 5 January : 0.33   meters at lowest and  0.83   meters at highest
Saturday 6 January : 0.02   meters at lowest and  0.85   meters at highest
© www.soinside.com 2019 - 2024. All rights reserved.