python - 汇总文本文件中的列

标签 python linux python-2.7

我有一个如下所示的数据文件:

 TOPIC:topic_0 2056
 ab  2.0
 cd  5.0
 ef  3.0
 gh  10.0

 TOPIC:topic_1 1000
 aa  3.0
 bd  5.0
 gh  2.0

等等......直到TOPIC:topic_2000。第一行是主题及其权重。也就是说,我有那个特定主题中的单词及其各自的权重。

现在,我想总结每个主题的第二列并检查它给出的值。也就是说,我希望得到如下输出:

 Topic:topic_0  20
 Topic:topic_1  10

即topic number和column value之和(即在topic 1中,词的权重为2,5,3,10)。我尝试使用:

with open('Input.txt') as in_file:
    for line in in_file:
        columns = line.split(' ')
        value = columns[0]

        if value[:6] == 'TOPIC:':
            total_value = columns[1]
            total_value = total_value[:-1]
            total_values = float(total_value)
            #print '\n'
            print columns[0]

但是,我不确定如何从这里着手。这只是打印主题编号。请帮忙!

最佳答案

import re

input = """
TOPIC:topic_0 2056
 ab  2.0
 cd  5.0
 ef  3.0
 gh  10.0

 TOPIC:topic_1 1000
 aa  3.0
 bd  5.0
 gh  2.0
"""

result = {}
for line in input.splitlines():
    line = line.strip()
    if not line:
        continue

    columns = re.split(r"\s+", line)
    value = columns[0]
    if value[:6] == 'TOPIC:':
        result[value] = []
        points = result[value]
        continue

    points.append(float(columns[1]))

for k, v in result.items():
    print k, sum(v)

关于python - 汇总文本文件中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33572311/

相关文章:

python - 您可以将列表索引设置为原始列表中的变量吗?

python - 通过通信发送输入(命令)到创建的子进程 Python

python pandas - 返回每个单元格中的列表或一系列值

ruby-on-rails - 您对 Web 应用程序文件位置的约定是什么?

python - 在Python中以最小迭代从另一个列表中获取列表

python-2.7 - 使用 groupby 创建百分比堆叠条形图

python - 来自(示例)主机 1 的 ryu(SDN)流量 Controller

python - py2neo连接错误(认证错误)

linux - 如何使 https 可用于 linux 服务器中的客户端

linux - 使用 gdrive 将文件上传到 google-drive 在 crontab 上不起作用