首页 > 解决方案 > 从python中的文件添加列值

问题描述

我有以下文件:

cat file.txt

1/1 2/3
2/3 1/3
./2 1/1
./. 3/2
1/1 ./.

我想删除点并添加每列中的数字(由斜线和空格分隔)。

到目前为止,我有:

fp = open("file.txt","r")

for line in fp:
    cols = line.rstrip().split(" ")
    res = [int(cols[i][0]) for i in range(0,len(cols))].remove('.')
    print(sum(res))

我正在尝试'/'在每列中的正斜杠之前和之后添加数字,并输出由'/'.

预期的输出将是

4/7 7/9

只需一条评论,我正在处理的真实文件就有 500 多个这些以空格分隔的列。

标签: python

解决方案


使用str方法

前任:

fp = """1/1 2/3
2/3 1/3
./2 1/1
./. 3/2
1/1 ./."""

c1, c2 = 0, 0
c3, c4 = 0, 0
for line in fp.splitlines():
    m, n = line.strip().split()
    m1, m2 = m.replace(".", "").split("/")
    n1, n2 = n.replace(".", "").split("/")
    if m1: c1 += int(m1)   #OR float(m1)
    if m2: c2 += int(m2)
    if n1: c3 += int(n1)
    if n2: c4 += int(n2)

print(f"{c1}/{c2} {c3}/{c4}")

输出:

4/7 7/9

根据评论编辑

result = [[0, 0] for i in range(2)] 
for line in fp.splitlines():
    row = line.strip().split()
    for idx, data in enumerate(row):
        m1, m2 = data.replace(".", "").split("/")
        if m1: result[idx][0] += int(m1)   #OR float(m1)
        if m2: result[idx][1] += int(m2)

print(result)

for m, n in result:
    print(f"{m}/{n}")

输出:

[[4, 7], [7, 9]]
4/7
7/9

推荐阅读