如何使用Python从TXT文件中提取首个与末位数值
解决提取文件中第一个和最后一个数值的问题
我来帮你搞定这个需求!你想要从目标TXT文件里提取第一个和最后一个数值,但目前的代码存在几个问题,导致输出不符合预期:
re.match('\d+', x)只会匹配每行开头的整数,不仅漏掉了带小数点的数值(比如4.6),也无法捕获行内其他位置的数字- 代码只是逐行打印匹配到的内容,没有把所有数字统一收集起来,自然没法直接获取首尾两个值
- 文件路径里的
\t会被Python当成制表符转义,容易导致路径错误,建议用原始字符串或者双反斜杠处理
修正后的代码
import re # 用原始字符串避免路径转义问题 with open(r"C:\testo.txt", "r") as fp: # 读取整个文件内容,而不是逐行读 content = fp.read() # 匹配所有整数和小数:\d+匹配整数部分,\.?匹配可选的小数点,\d*匹配可选的小数部分 all_numbers = re.findall(r'\d+\.?\d*', content) # 提取第一个和最后一个数值 if all_numbers: first_num = all_numbers[0] last_num = all_numbers[-1] print(f"{first_num} {last_num}")
代码说明
- 路径处理:用
r"C:\testo.txt"的原始字符串格式,避免\t被转义成制表符 - 正则匹配:
r'\d+\.?\d*'可以匹配所有整数(如1、58)和带小数点的数值(如4.6、4.2) - 收集与提取:一次性读取整个文件内容,用
re.findall捕获所有符合要求的数值,最后取列表的第一个和最后一个元素打印
运行这段代码后,就能得到你期望的输出:1 58
内容的提问来源于stack exchange,提问作者luna8899
相关产品推荐
相关产品推荐

