Я пытаюсь суммировать все числа в текстовом файле, помещая две работоспособные переменные в одну строку, и это возвращает 0. Что пошло не так?

#python-3.x

#python-3.x

Вопрос:

Я использовал 3 строки кодов, которые хорошо работали. Затем я пытаюсь свести их в одну строку, что, я полагаю, можно сделать, объединив две переменные. Но по какой-то причине сокращенные коды возвращали только 0 вместо фактической суммы, которую можно было вычислить раньше. Что пошло не так в сокращенных кодах?

 hand = open('xxxxxx.txt')
# This is a text file that contains many numbers in random positions
import re
num = re.findall('[0-9] ', hand.read())
# I used regular expression on variable 'num' to extract all numbers from the file and put them into a list
numi = [int(i) for i in num]
# I used variable 'numi' to convert all numbers in string form to integer form
print(sum(numi))
# Successfully printed out the sum of all integers


print(sum([int(i) for i in re.findall('[0-9] ', hand.read())]))
# Here is the problem. I attempted to contract variables 'num' and 'numi' into one line of codes. But I only got 0 instead of the actual sum from it`enter code here`
  

Ответ №1:

если вы выполняете весь код, как я вижу там, нормально получить 0, потому что вы не открывали файл повторно после его первого использования, просто повторно откройте файл «hand» или оставьте последнюю строку, которую вы хотите использовать, и удалите три строки перед ней.

Ответ №2:

Этот код отлично работает для меня —

 hand = open('xxxxx.txt')
import re
print(sum([int(i) for i in re.findall('[0-9] ', hand.read())]))
  

Вы должны закрыть файл и снова открыть его перед запуском последней строки.