Python提取CSV文件中动态变化的玩家与机器人得分问题
解决CSV分数提取问题
你的代码存在两个核心问题:
- 错误访问了
row[0](用户名所在列),分数信息实际在row[1](第二列)中 - 拆分逻辑针对的是错误的字符串内容,无法定位到分数值
以下是修正后的代码,使用正则表达式可靠提取动态变化的分数:
import csv import re # 定义匹配分数的正则模式,支持整数和小数 score_pattern = re.compile(r"There score: ([\d.]+) \| Robots Score: ([\d.]+)") with open('your_file.csv', newline='') as csvfile: reader = csv.reader(csvfile, delimiter=',', quotechar='"') for row in reader: # 获取包含分数的第二列内容 score_text = row[1] # 匹配分数 match = score_pattern.search(score_text) if match: # 提取两个分数并转换为数值类型 player_score = float(match.group(1)) robot_score = float(match.group(2)) # 若确定分数为整数,可改为int(match.group(1)) print(f"玩家分数: {player_score}, 机器人分数: {robot_score}") else: print("未找到匹配的分数格式")
代码说明:
- 正则表达式:
r"There score: ([\d.]+) \| Robots Score: ([\d.]+)"精准匹配字符串中分数字段后的数值,支持整数和小数格式 - CSV读取:csv.reader会自动处理带引号的第二列,即使内容包含换行符或ANSI转义码(如
[37m) - 类型转换:使用
float()兼容所有数值场景,若分数始终为整数,可替换为int()
测试你的示例输入:
- 第一个CSV行输出:
玩家分数: 0.0, 机器人分数: 1.0 - 第二个CSV行输出:
玩家分数: 6.0, 机器人分数: 17.0
内容的提问来源于stack exchange,提问作者EK01
相关产品推荐
相关产品推荐

