How to understand what is wrong with my Python loop code

Question:

I have written this code to extract only digits from a text file and then calculate sum of those values extracted . But I am getting 0 as answer which should 285701 in actual. I don’t understand what I am doing wrong even after working on it for long, I am not very experienced in programming just started learning.

import re
fname = open("http://py4e-data.dr-chuck.net/regex_sum_1501185.txt")
sum = 0
value = list()
for line in fname:
     line = re.findall("[0-9]+", line)
     value = value + line
for x in value:
     sum = sum + int(x)
print(sum)


    

Asked By: Raju Ritigya

||

Answers:

You can’t open web urls with open() you need to use urllib.request.urlopen():

import urllib.request
import re
fname = urllib.request.urlopen("http://py4e-data.dr-chuck.net/regex_sum_1501185.txt")
data = fname.read().decode()
data = data.split('n')
sum = 0
value = list()
for line in data:
     nums = re.findall("[0-9]+", line)
     value = value + nums
for x in value:
     sum = sum + int(x)
print(sum)

Output:

285701

You need to be careful with your variable names naming your variable sum causes that you won’t be able to use the builtin function sum()

It would be better if your code looks like that:

import urllib.request
import re
fname = urllib.request.urlopen("http://py4e-data.dr-chuck.net/regex_sum_1501185.txt")
data = fname.read(50000).decode()
data = data.split('n')
value = list()
for line in data:
     line = re.findall("[0-9]+", line)
     value = value + [int(i) for i in line]
print(sum(value))

Docs

Answered By: noah1400
Categories: questions Tags: , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.