Python读取文件按最后一个冒号拆分提取地址写入新文件问题
错误原因
- 你使用
read()直接读取整个文件为单个长字符串,直接执行rsplit(":",1)是对整个长字符串从右向左拆分1次,自然只能拿到最后一行的地址,没有按行处理每个独立的条目。 - 手动打开输出文件没有使用上下文管理器,存在资源泄漏风险,
with语句包裹的文件会自动关闭,你后续手动调用file_to_open.close()属于多余操作。 - 没有给每个地址添加换行符,写入后内容会连在一起不符合输出要求。
- 原代码中输出文件名为
adresses.txt(拼写错误,少了一个d),和你预期的addresses.txt不一致。
修正后代码
# 使用with上下文管理器管理输出文件,自动处理关闭逻辑 with open('addresses.txt', 'w', encoding='utf-8') as out_file: with open('data.txt', 'r', encoding='utf-8') as in_file: # 逐行读取文件内容 for line in in_file: # 对单行内容从右拆分1次,取最后一段即为地址,strip()去除多余换行/空格 address = line.rsplit(':', 1)[-1].strip() # 写入地址加换行符 out_file.write(f"{address}\n")
代码说明
- 采用逐行读取的方式处理每个用户条目,避免一次性加载大文件的内存占用问题
- 单行拆分逻辑适配你文件中每列用冒号分隔、地址是最后一列的规则,即便地址本身包含冒号也能正确提取
- 使用
w模式写入输出文件,每次运行都会生成全新的地址文件,不会出现内容重复追加的问题 - 两个文件都用上下文管理器管理,无需手动调用close方法,避免资源泄漏
内容的提问来源于stack exchange,提问作者Mariusz
相关产品推荐
相关产品推荐

