python - 如何按周显示数据并显示周数?

标签 python python-3.x list datetime strftime

我有一个巨大的日期和数字列表,如下所示:

 1.1.2018 0:00;2590
 3.1.2018 1:00;2530
 4.2.2018 2:00;1700
 6.2.2018 3:00;2340
 18.3.2018 4:00;1800
 15.4.2018 5:00;2850
 ...

我需要将具有相同周数的所有数字加在一起,并返回一周内的数字总数,如下所示:

0;0
1;549730
2;645010
3;681320
4;677060
5;698450
...etc
52;576280
53;81640

到目前为止,这是我的代码,我已将日期和数字分隔在自己的列表中,但不确定如何从这里继续。

import datetime

def main():
    file = open("2018Electricity.txt", "r")
    line = file.readline()
    time_list = []
    electricity_list = []
    total = []

    for i in file:
        time = i.strip().split(';')[0]
        electricity = i.strip().split(';')[1]
        time_list.append(datetime.strptime(time, '%d.%m.%Y %H:%M'))
        electricity_list.append(electricity)
        
    file.close()

main()

该任务要求我有 0-53 周的时间,并使用列表和 strftime %W。

最佳答案

这是完整的代码(代码中以注释形式提供了说明):

from datetime import datetime #You messed up with the import statement. It should be from datetime import datetime instead of import datetime

def main():
    file = open("2018Electricity.txt", "r")
    line = file.readline()
    time_list = []
    electricity_list = []
    total = []

    for i in file:
        time = i.strip().split(';')[0]
        electricity = i.strip().split(';')[1]
        datee = datetime.strptime(time, '%d.%m.%Y %H:%M')
        
        if  datee.month != 12:
            time_list.append(datee.isocalendar()[1])
        else:
            if datee.isocalendar()[1] == 1:
                time_list.append(53)
            else:
                time_list.append(datee.isocalendar()[1])

        electricity_list.append(int(electricity)) #Converts electricity to an integer and appends it to electricity_list

    week_numbers = list(set(time_list)) #Removes all repeated week numbers

    for week_number in week_numbers: #Iterates over the week_numbers
        curr_elec = 0
        for week,elec in zip(time_list,electricity_list): #Creates an iterable out of time_list and electricty_list
            if week == week_number:
                curr_elec += elec #Running total of the electricity for the current week
        print(f"{week_number};{curr_elec}")

    file.close()

main()

输出:

1;5120
5;1700
6;2340
11;1800
15;2850

关于python - 如何按周显示数据并显示周数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64439900/

相关文章:

python - 根据文件名通过 FTP 上传多个文件

python - 如何打印内部列表包含字符串和字符串列表的列表列表?

python - 使用 openpyxl 加载工作表并忽略包含数据透视表的其他工作表

python - 如何在python中解密密码

javascript - html 在单击按钮时从 json 数据加载更多

python - 如何在 python 3 中使用 raw_unicode_escape 编码打印字符串?

python - 如何确保 concurrent.futures 迭代器中每个 Future 的超时?

python - 列表列表到字典列表

python - 如何查找列表中的项目(不使用 "in"方法)?

PYTHON - 从一组多项选择中输出所有可能的结果?