python txt文件中两个值的差异

2024-10-02 14:27:19 发布

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

我在txt文件的每一行都有一些值。现在我要计算

line[1] - line[0], line[3] - line[2]

等等。在

import sys

l = []
i = 0
f=open('Isotop1.txt')
# i = Zeilennummer, line = text der Zeile
for line in enumerate(f):
    l.append(line)
    for i in l:
        c = l[i] - l[i-1]
        print c


f.close()

稍后,我希望将解决方案存储在一个新的文本文件中。 但是现在我得到了list indices must be integers, not tuple错误。 有人能帮忙吗?在

这是文本文件中的一个小示例。我要计算33和0,94和61之间的差异,等等。也许我用了一个完全错误的方法来解决这个问题。。。在


Tags: 文件textinimporttxtfor错误sys
1条回答
网友
1楼 · 发布于 2024-10-02 14:27:19
with open("in.txt") as f:
    # get first line/number
    nxt = int(next(f))
    for n in f:
        print("absolute difference between {} and {} = {}"
              .format(n.rstrip(), nxt, abs(int(nxt) - int(n))))
        # set nxt equal to the next number
        nxt = int(next(f,0))

输出:

^{pr2}$

如果要使用每个号码:

def diff(fle):
    with open(fle) as f:
        nxt = int(next(f))
        for n in f:
            yield abs(int(nxt) - int(n))
            nxt = int(next(f,0))

print(list(diff("in.txt")))
[33, 33, 31, 22, 19, 23, 14]

或者迭代一次得到一个数字:

for n in diff("words.txt"):
    print(n)

输出:

33
33
31
22
19
23
14

使用0作为next的默认值将避免StopIterationError。

如果您正在进行大量的数值计算,numpy可能会更好:

import numpy as np

arr = np.loadtxt("words.txt", dtype=np.int)

diff = np.abs(np.diff(arr.reshape(-1,2)).flatten())

print(diff)

相关问题 更多 >