Python循环代码调试:提取文本数字求和结果为0的问题排查
问题原因及解决办法
你的代码核心问题是**open()函数无法直接读取网络URL的内容**,它只能打开本地文件。所以你的循环根本没读到目标文件里的任何数字,最终sum自然是0。
修正后的代码
import re import urllib.request # 获取网络文件内容并读取为文本 url = "http://py4e-data.dr-chuck.net/regex_sum_1501185.txt" response = urllib.request.urlopen(url) text = response.read().decode('utf-8') # 提取所有数字字符串并转换为整数 numbers = re.findall(r'[0-9]+', text) total = sum(int(num) for num in numbers) print(total)
关键改动说明:
- 使用
urllib.request.urlopen()读取网络资源,这是Python标准库自带的工具,不需要额外安装 - 读取到的内容是字节流,用
decode('utf-8')转换为字符串 - 用生成器表达式直接求和,简化代码逻辑
运行这段代码就能得到正确结果285701了。
内容的提问来源于stack exchange,提问作者user19274296
相关产品推荐
相关产品推荐

