如何使用计数器法读取文件并提取不含键名的目标内容?
用计数器法提取文本中的姓名与玩家编号
嘿,我来帮你把这个计数器法的代码补全,刚好匹配你要处理的文本格式~
首先明确咱们的思路:每组数据里都固定有name和player两个字段,用一个计数器追踪当前处理的是第几个值——计数器为1时对应姓名,为2时对应玩家编号,每处理完一组就重置计数器,把配对好的数据存进列表里。
完整代码实现
filename = open("testing.txt","r", encoding = "utf-8") playerFile = filename lst = [] for line in playerFile: line = line.replace('\n','') # 去掉换行符 # 把每行按空格分割,过滤掉空内容(避免多余空格干扰) elements = [item.strip() for item in line.split() if item.strip()] count = 0 current_name = "" current_player = "" for elem in elements: # 判断当前元素是字段标识(带冒号)还是对应的值 if elem.endswith(':'): count += 1 # 遇到标识就递增计数器,准备接收对应值 else: # 根据计数器值分配到对应变量 if count == 1: current_name = elem elif count == 2: current_player = elem # 把配对好的一组数据添加到列表(这里用元组,也可以换成字典格式) lst.append( (current_name, current_player) ) # 记得关闭文件哦 filename.close() # 可以打印结果验证 print(lst)
代码小说明
- 先对每行内容做了清理:去掉换行符,再按空格分割成元素列表,同时过滤空字符串,避免多余空格导致的错误。
- 计数器
count是核心:遇到name:时count变为1,接下来的元素就是姓名;遇到player:时count变为2,接下来的元素就是玩家编号。 - 每处理完一行(一组数据),就把配对好的姓名和编号以元组形式存入列表,最终你会得到
[('James', '2'), ('Martin', '3'), ...]这样的结果。 - 要是想更优雅地管理文件,可以把开头的文件打开改成
with open("testing.txt","r", encoding="utf-8") as playerFile:,这样不用手动写close(),程序会自动处理。
内容的提问来源于stack exchange,提问作者clink
相关产品推荐
相关产品推荐

