gpt4 book ai didi

python - 遍历文件的文件夹并在列中添加值?

转载 作者:太空宇宙 更新时间:2023-11-03 15:23:35 26 4
gpt4 key购买 nike

我有多个文件,数据写在两列中,如下所示:

asp 1.88
gln 3.10
arg 0.99
his 1.11

asp 0.99
gln 1.11
arg 0.08
his 0.01

等等。

我想做的是将它们相加并写入一个新文件,如下所示:

asp 2.87
gln 4.21
arg 1.07
his 1.12

我尝试通过导入 Counter 但效果不佳。我也试过这样:

inp = ('c"/users/ansm/desktop/xx.txt','r').read().strip().split('\n')
inp2 = ('c"/users/ansm/desktop/xyz.txt','r').read().strip().split('\n')
c = Counter(inp)
d = Counter(inp2)
print c+d

但此代码不会将值相加。

有没有不使用 Counter 的其他方法?我正在使用 glob.iglob 在整个文件夹中迭代 .txt 格式的文件,然后想处理它们以获得上述结果。使用 Counter 是最有效的方法还是其他更好的方法?

最佳答案

使用此构造创建计数器:

c = Counter(dict((x.split()[0], float(x.split()[1])) for x in inp))
d = Counter(dict((x.split()[0], float(x.split()[1])) for x in inp2))

结果 c+d 将是:

Counter({'gln': 4.21, 'asp': 2.87, 'his': 1.12, 'arg': 1.07})

EDIT 许多文件:

s = Counter()
for filename in glob.iglob('*.txt'):
with open(filename, 'r') as f:
for line in f:
k, v = line.split()
s[k] += float(v)
print s
with open('sum.txt', 'w') as f:
for k, v in sorted(s.iteritems()):
f.write('{0} {1}\n'.format(k, v))

关于python - 遍历文件的文件夹并在列中添加值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10880317/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com