Python 我有一个包含这些数据的文件

Python 我有一个包含这些数据的文件,python,string,string-parsing,group-by,Python,String,String Parsing,Group By,2012-05-10布拉德10 2012-05-08布拉德40 2012-05-08布拉德60 2012-05-12汤姆100 我想要一个输出 2012-05-08布拉德100 2012年5月10日布拉德1月10日 2012-05-12汤姆100 我从以下代码开始: import os,sys fo=open("meawoo.txt","w") f=open("test.txt","r") fn=f.readlines() f.close() for line in fn: line =

2012-05-10布拉德10 2012-05-08布拉德40 2012-05-08布拉德60 2012-05-12汤姆100 我想要一个输出 2012-05-08布拉德100 2012年5月10日布拉德1月10日 2012-05-12汤姆100

我从以下代码开始:

import os,sys
fo=open("meawoo.txt","w")
f=open("test.txt","r")
fn=f.readlines()
f.close()
for line in fn:
    line = line.strip()
    sline = line.split("|")
    p = sline[1].split(" ")[0],sline[2],sline[4]
    print p
    fo.writelines(str(p)+"\n")
fo.close()
o_read = open("meawoo.txt","r")
x_read=o_read.readlines()
from operator import itemgetter
x_read.sort(key=itemgetter(0))
from itertools import groupby
z = groupby(x_read, itemgetter(0))
print z
for elt, items in groupby(x_read, itemgetter(0)):
    print elt, items
    for i in items:
        print i

It will be very helpful if u suggest me some usefull changes to my work.TIA

据我所知,以下代码应以您想要的格式打印数据:

d = {}
with open("testdata.txt") as f:
    for line in f:
        parts = line.split()
        if parts[0] in d:
            if parts[1] in d[parts[0]]:
                d[parts[0]][parts[1]][0] += int(parts[2])
            else:
                d[parts[0]][parts[1]] = [int(parts[2]), 0]
            d[parts[0]][parts[1]][1] +=1
        else:
            d[parts[0]] = {parts[1]: [int(parts[2]), 1]}
    for date in sorted(d):
        for name in sorted(d[date]):
            print "%s %s|%d|%d" % (date, name, d[date][name][0], d[date][name][1])
我将每一行保存在一个字典中,每一行的日期都作为键,值是另一个以名称为键的字典,值是一个包含两个元素的列表:第一个是该日期到该行的该名称的数字的累积和,第二个是该日期/名称星座的总和。然后,我以您要求的格式打印字典,并使用两个日期的比较结果与日期作为格式为YYY-MM-DD的字符串的比较结果相同的情况,因此我可以对日期字符串使用排序函数。我也按名字排序


有关适用于无法使用文件的示例,请参阅。它提供了与您所要求的相同的输出。

用文字更准确地描述您试图实现的目标。你还说你有一个文件,但你的代码打开了两个文件。只要告诉我,如果我有一个文件的数据是::2012-05-10 BRAD 6 2012-05-10 BRAD 4 2012-05-08 BRAD 20我怎么得到这个::2012-05-08 BRAD | 1 | 20 2012-05-10 BRAD | 2 | 10 i.e Groupby DATE Groupby NAME | LenNAME | SUMVALUESHi谢谢,但作为我是python新手,我只是想问一下它是否是一个文件,我必须迭代然后对它们进行分组,然后你会建议我做什么更改。上面的代码应该与一个名为testdata的文件一起使用。嘿,检查一下,在文件中再添加一行,你会发现一些新内容::添加这一行::2012-05-10 SIM100@Abhineet50种颜色巨蟒:@halex+1感谢你的耐心伙伴。