Python 在列表中合并两个字符串

Python 在列表中合并两个字符串,python,Python,我基本上有一个日期和能源生产作为一个整数后。我想让它看起来像 ['2016-01-01 00:00:00', '0', '2016-01-01 08:00:00', '268705.0', '2016-01-01 16:00:00', '0', '2016-01-02 00:00:00', '0', '2016-01-02 08:00:00', '0.0', '2016-01-02 16:00:00', '0.0', '2016-01-03 00:00:00' ... ... et

我基本上有一个日期和能源生产作为一个整数后。我想让它看起来像

['2016-01-01 00:00:00', '0',
 '2016-01-01 08:00:00', '268705.0',
 '2016-01-01 16:00:00', '0',
 '2016-01-02 00:00:00', '0',
 '2016-01-02 08:00:00', '0.0',
 '2016-01-02 16:00:00', '0.0',
 '2016-01-03 00:00:00' ...
 ... etc for 1 year]
aka
['date;energy']


有什么建议吗?我不熟悉这一点,需要它来完成我的课程…

使用
zip
生成所需值的压缩列表,然后使用
join
加入列表

['2016-01-01 00:00:00;0',
 '2016-01-01 08:00:00;268705.0',
 ... etc]
使用和列表切片将从索引0开始的每2个元素压缩为从索引1开始的每2个元素:

>>> a=['2016-01-01 00:00:00', '0', '2016-01-01 08:00:00', '268705.0', '2016-01-01 16:00:00', '0']
>>> [';'.join(i) for i in zip(a[::2],a[1::2])]
['2016-01-01 00:00:00;0', '2016-01-01 08:00:00;268705.0', '2016-01-01 16:00:00;0']
>>> 
输出:

data = ['2016-01-01 00:00:00', '0',
        '2016-01-01 08:00:00', '268705.0',
        '2016-01-01 16:00:00', '0',
        '2016-01-02 00:00:00', '0',
        '2016-01-02 08:00:00', '0.0',
        '2016-01-02 16:00:00', '0.0',
        '2016-01-03 00:00:00', "18.05",]

new_data = list(zip(data[0::2],data[1::2]))

print(new_data)

combined = ["{};{}".format(a,b) for a,b in new_data]

print(combined)
new_data = sorted((zip(data[0::2],data[1::2])))

from itertools import groupby 

# x[0][0:10] uses the 1st element of each tuple (the datetime) and slices only the date
# from it. That is used to group all data.
k = groupby(new_data, lambda x:x[0][0:10])

summs = []
for date,tups in k:
    summs.append( (date,sum(float(x[1]) for x in tups)) )

print(summs)

如果我是你,我不会将它们组合起来,而是进一步使用元组。F.e.如果你想总结每天的能量:

# new_data (I would vouch to use that further on)
[('2016-01-01 00:00:00', '0'), ('2016-01-01 08:00:00', '268705.0'), 
 ('2016-01-01 16:00:00', '0'), ('2016-01-02 00:00:00', '0'), 
 ('2016-01-02 08:00:00', '0.0'), ('2016-01-02 16:00:00', '0.0'), 
 ('2016-01-03 00:00:00', '18.05')]

# combined
['2016-01-01 00:00:00;0', '2016-01-01 08:00:00;268705.0', '2016-01-01 16:00:00;0',
 '2016-01-02 00:00:00;0', '2016-01-02 08:00:00;0.0', '2016-01-02 16:00:00;0.0', 
 '2016-01-03 00:00:00;18.05']
输出:

data = ['2016-01-01 00:00:00', '0',
        '2016-01-01 08:00:00', '268705.0',
        '2016-01-01 16:00:00', '0',
        '2016-01-02 00:00:00', '0',
        '2016-01-02 08:00:00', '0.0',
        '2016-01-02 16:00:00', '0.0',
        '2016-01-03 00:00:00', "18.05",]

new_data = list(zip(data[0::2],data[1::2]))

print(new_data)

combined = ["{};{}".format(a,b) for a,b in new_data]

print(combined)
new_data = sorted((zip(data[0::2],data[1::2])))

from itertools import groupby 

# x[0][0:10] uses the 1st element of each tuple (the datetime) and slices only the date
# from it. That is used to group all data.
k = groupby(new_data, lambda x:x[0][0:10])

summs = []
for date,tups in k:
    summs.append( (date,sum(float(x[1]) for x in tups)) )

print(summs)

只需将日期加上分号,然后再加上能源生产。我想这个问题的答案可能会帮助你:现在我有另一个问题。现在我有了这个“2016-01-01 00:00:00”的列表;0’等。。我需要以某种方式使用timedelta来添加特定日期的所有能源生产,例如,添加到2016年1月1日的表格中;那天的综合能量。2016年1月2日;那天的综合能量。等因此,一天有三个日期和三个能量总和,它们需要合并为一天和一个能量总和。正如我所写,它需要以d.m.year的形式。['01.01.2016;0','01.01.2016;268705.0','01.01.2016;0','02.01.2016;0','02.01.2016;0.0','02.01.2016;0.0','03.01.2016;0.0']好的,现在我的列表是这样的,我现在需要它像01.01.2016;能量生产的总和day@anonymous33243433这是一个新问题,应该是一个新问题。我添加了代码,向您展示了如何使用元组方法来实现这一点。您可以使用上面的代码str join这些值,然后对分组结果进行签名。您需要对日期元组进行排序,因此我将
list
更改为
sorted
,因此
groupby
有效。还有一件事,日期必须看起来像2016年1月1日--2016年2月1日等等。。不是2016年1月1日Gahhh有更多的事情要做do@anonymous33243433你的任务——不是我的。您可以使用创造性的datestring切片,或者使用usìng
datetime.strTime
datetime.strftime
将您的日期转换为datetime对象并返回到字符串-本论坛上有很多问题,例如:-您的第三个问题-但有很多重复: