如何在Python中操作列表提取所需信息:截取手机号前3位保留完整人名
需求实现方案
方案1:更稳妥的按行读取处理(推荐)
你原来用f.read().split()的写法会把所有内容按任意空白分割,打散行对应关系,更推荐直接按行处理:
unique_result = set() with open('file.txt', 'r', encoding='utf-8') as f: for line in f: stripped_line = line.strip() # 跳过空行 if not stripped_line: continue # 仅拆分第一个空格,避免人名含空格被误拆分 phone, full_name = stripped_line.split(maxsplit=1) # 取手机号前3位 phone_prefix = phone[:3] unique_result.add(f"{phone_prefix} {full_name}") # 写入新文件 with open('output.txt', 'w', encoding='utf-8') as f: for line_content in unique_result: f.write(f"{line_content}\n")
该方案自动去重,最终输出和你给出的预期结果完全一致。
方案2:基于你现有得到的列表处理
如果你一定要基于已经生成的data列表(格式为[手机号1, 人名1, 手机号2, 人名2...])处理,可以按如下方式配对:
unique_result = set() # 步长为2遍历,依次取手机号和对应人名 for idx in range(0, len(data), 2): phone = data[idx] full_name = data[idx + 1] unique_result.add(f"{phone[:3]} {full_name}") # 写入文件逻辑同方案1
注意:该方案仅适用于人名中没有空格的场景,否则会出现配对错误
内容的提问来源于stack exchange,提问作者GratefullyDead
相关产品推荐
相关产品推荐

