我如何读取文件中的某些4位数字并移至另一行并执行相同操作,依此类推,依此类推

问题描述 投票:-1回答:4

所以我有这个问题需要解决。我有一个文件,类似于:

11-08-2012; 1485; 10184; 7,53; 31; 706; 227; 29; 6; 1102

12-08-2012; 2531; 10272; 7,59; 25; 695; 222; 26; 22; 1234

13-08-2012; 1800; 13418; 8,66; 46; 714; 203; 50; 6; 0757

14-08-2012; 2009; 11237; 9,43; 81; 655; 246; 49; 7; 1783

而且我应该能够先读取“ 1485”部分,然后读取“ 2531”部分,然后读取“ 1800”部分,一直到文件末尾,最后进行总结。我怎么做?我在这段文字下写了我如何尝试解决这个问题。但是我似乎迷失了这个。有人可以帮忙吗?

同时为True:

    f.seek(12)
    text=f.read(4)

    text=f.readline()
    if(text==""):
        break
    return text
python line readline readlines
4个回答
1
投票

[numpypandas,简单的coroutines等有多种方法可以执行此操作。我正在添加最接近您的方法。

total = 0
with open('exmplefile.txt','r') as f:
    for line in f:
        elements = line.split(';')
        num_of_interest = int(elements[1])
        # you can add a print if you want
        total += num_of_interest
print(total)

0
投票

尝试一下

mylist = []
for string in file:
    mynum = string.split(';')[1]
    mylist.append(mynum)
sum([int(i) for i in mylist])

0
投票

此解决方案是通过获取公共术语的第一个和第二个索引,在这种情况下为;

with open(filename,'r') as file:
    file_list = file.readlines()

sum = 0

for line in file_list:
    loc = line.find(';')
    first_loc = loc + 1
    last_loc = loc +line[loc+1:].find(';')+1

    sum = sum + int(line[first_loc:last_loc])

print(sum)

0
投票

此解决方案适用于4位数字不是数组中的第二项的情况>

with open("path/to/file") as f:
  f1 = f.readlines()

  sum = 0
  for line in f1:
    lineInArray = line.split(';')
    for digit in lineInArray:
      if len(digit.strip()) == 4 and digit.strip().isnumeric():
        sum += int(digit)

0
投票

谢谢你们回答我!这些方法肯定是很棒的方法,但这是一个学校项目,我们是许多初学者,我们没有被教过很多这样的代码。例如“ with open as f:”。所以任何人都可以提出最简单/最原始的解决方案!

© www.soinside.com 2019 - 2024. All rights reserved.