基于Nam的字符串分组

2024-09-29 04:29:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试自学一些python代码,我遇到了这个问题:

输入文本文件内容:

10280341|2012-10-03 19:11:06.390|Sami|abc|Crossword|70
10280343|2012-10-03 19:15:32.173|Sami|aaa|Sudoku|30
10280355|2012-10-04 19:18:32.173|miami|bbb|Chaircar|15
10280366|2012-10-04 19:19:32.173|miami|bob|Avista|35

预期输出:

2012-10-03 Sami|2|100
2012-10-04 miami|2|50

我知道这可以通过字符串解析和匹配来完成,但我不知道从哪里开始。任何链接或指针都将对任何类似的问题非常有帮助。 短暂性脑缺血发作


Tags: 字符串代码内容bobabcbbb文本文件sudoku
2条回答

使用^{}读取文件。在对行进行排序之后,使用^{}对行进行分组。使用^{}通过generator expression对分组行中的每个值求和。你知道吗

您可以使用已经建议过的itertools.groupby,或者使用已经是生成器和collections.defaultdictcsv.reader对象来聚合value列。。。你知道吗

import csv
from collections import defaultdict

summary = defaultdict(list)
csvin = csv.reader(open('testdata.txt'), delimiter='|')
for row in csvin:
    summary[(row[1].split(' ')[0], row[2])].append(int(row[5]))

csvout = csv.writer(open('testdata.out','wb'), delimiter='|')
for who, what in summary.iteritems():
    csvout.writerow( [' '.join(who), len(what), sum(what)] )

如果您正在研究更复杂的交叉制表/数据透视等,那么很值得一看pandas,它是一个基于numpy的非常有用的库

相关问题 更多 >