You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将重复格式的Lichess棋谱文本文件转换为CSV?

嘿,这个需求我熟——把Lichess那一堆重复格式的Crazyhouse对局数据转成规整的CSV对吧?我给你梳理几个清晰的启动方向,一步步来就没问题:

第一步:先搞定单局数据的元数据提取

每局对局开头的[Key "Value"]格式是核心,这部分就是你要的CSV表头对应的内容。最直接的方式是用正则表达式来匹配这些键值对,比如用模式\[(\w+) "([^"]+)"\],就能精准抓出Event、Site这类字段名和对应的内容。

给你个Python的极简示例(换成其他语言思路完全一致):

import re

# 单局对局文本示例
single_game = """[Event "Rated Crazyhouse game"] [Site "https://lichess.org/NsNeyqv1"] [Date "2018.01.23"] ... 0-1"""

# 匹配所有元数据键值对
metadata_pattern = re.compile(r'\[(\w+) "([^"]+)"\]')
game_metadata = dict(metadata_pattern.findall(single_game))

# 现在game_metadata就是一个字典,比如game_metadata["Site"]就是对局链接
第二步:批量拆分多局数据

你的文件是多局对局连在一起的,所以得先把整个文件拆成单个对局的文本块。观察示例可以发现:

  • 每局都以[Event "Rated Crazyhouse game"]开头
  • 每局结尾都有结果标记(比如0-1、1-0、1/2-1/2)

你可以用开头的[Event ...]作为分隔符(注意处理第一局没有前置分隔符的情况),或者用结尾的结果字符串来拆分,两种方式都很稳妥。

第三步:可选——提取对局走法(如果需要的话)

如果CSV里只需要元数据,这步可以跳过;要是想把走法也保留成一个字段(比如命名为Moves),可以找到元数据结束的位置(第一个1. 出现的地方),把后面的所有内容(包括时钟标注)切出来就行。

第四步:生成CSV文件

当你把所有对局的元数据都整理成字典列表后,就可以用CSV库来生成文件了。先定义好所有可能的表头(比如Event、Site、Date、WhiteElo这些),然后把每个对局的字典对应的值填进去,注意处理缺失字段的情况(比如某些对局可能少个字段,要留空)。

还是用Python举个例子:

import csv

# 假设你已经收集了所有对局的元数据字典,存在all_games列表里
all_games = [game_metadata1, game_metadata2, ...]

# 定义完整的表头
csv_headers = [
    "Event", "Site", "Date", "Round", "White", "Black", "Result",
    "UTCDate", "UTCTime", "WhiteElo", "BlackElo", "WhiteRatingDiff",
    "BlackRatingDiff", "Variant", "TimeControl", "ECO", "Opening",
    "Termination", "Moves"  # Moves是可选字段
]

# 写入CSV文件
with open('crazyhouse_games.csv', 'w', newline='', encoding='utf-8') as csv_file:
    writer = csv.DictWriter(csv_file, fieldnames=csv_headers)
    writer.writeheader()  # 写入表头
    for game in all_games:
        # 如果提取了走法,就把走法内容赋值给game["Moves"]
        # game["Moves"] = extracted_moves_text
        writer.writerow(game)
额外小提示
  • 先拿示例里的两局数据做测试,确保正则匹配和拆分逻辑没问题,再批量处理大文件
  • 注意检查特殊情况:比如有没有字段值里包含引号?不过Lichess的PGN格式里,值都是双引号包裹,内部引号会转义,你的示例里没出现,暂时不用太担心
  • 如果你用其他语言(比如JS、Java),核心思路完全一样:正则抓元数据→拆分多局→写入CSV

内容的提问来源于stack exchange,提问作者user3808597

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:25:13