Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将同一周的所有数字相加到一个列表中?_Python_List_Datetime_Strptime_Strftime - Fatal编程技术网

Python 如何将同一周的所有数字相加到一个列表中?

Python 如何将同一周的所有数字相加到一个列表中?,python,list,datetime,strptime,strftime,Python,List,Datetime,Strptime,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

我在谷歌上搜索答案已经有两天了,但我还是被卡住了

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

 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
我需要将所有具有相同周数的数字相加,并返回一周内的数字总数,如下所示:

 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
到目前为止,这是我的代码,我已经在自己的列表中分隔了日期和数字,但不确定如何从这里开始。我应该以某种方式使用strftime%W,但不知道如何使用

import datetime
from datetime import date
from datetime 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()

只需使用一个简单的字典并按顺序运行它

import datetime
def solution():
    data = [
        "1.1.2018 0:00;2590",
        "3.1.2018 1:00;2530",
        "4.2.2018 2:00;170",
        "6.2.2018 3:00;2340",
        "18.3.2018 4:00;1800",
        "15.4.2018 5:00;2850"
    ]

    result = {} # store in a dictionary

    for date in data:
        day = int(date.split(".")[0])
        month = int(date.split(".")[1])
        year = int(date.split(".")[2][0:5])
        week = datetime.date(year, month, day).isocalendar()[1]
        if week not in result:
            result[week] = 0
        result[week] += int(date.split(";")[1])
    return result

result = solution()
for week, value in result.items():
    print(f"{week};{value}")

这是否回答了您的问题:每行中的每个元素代表什么?是否有一种方法可以用列表来代替?它也返回0;第0周和第53周?因为现在它返回第1-52周,第1周添加了第53周的数字。请看;-)