Как мне прочитать определенные 4 цифры в файле и перейти к другой строке, сделать то же самое и так далее - PullRequest
0 голосов
/ 14 октября 2019

Итак, у меня есть проблема, которую мне нужно решить. У меня есть файл, который выглядит примерно так:

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» и доходит до конца файла и, наконец, суммирует их. Как мне это сделать? Я написал под этим текстом, как я пытался подойти к этой проблеме с помощью while. Но я, кажется, заблудился с этим. Кто-нибудь может помочь?

в то время как True:

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

    text=f.readline()
    if(text==""):
        break
    return text

Ответы [ 4 ]

1 голос
/ 14 октября 2019

Это решение заключается в получении первого и второго индекса общего термина, в данном случае ;.

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)
1 голос
/ 14 октября 2019

Есть несколько способов сделать это: numpy, pandas, простой 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 голосов
/ 14 октября 2019

Это решение предназначено для случаев, когда 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 голосов
/ 14 октября 2019

Попробуйте это

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