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

如何在chess-python库中转换棋子走法记谱方式?

将UCI走法转换为代数记谱法(SAN)

你用反方法了——board.parse_san()是把SAN格式转成UCI格式的,比如输入Nf3会返回g1f3,和你的需求正好相反。

要把UCI格式(比如g1f3)转成SAN格式(比如Nf3),应该用board.san()方法,步骤如下:

  1. 初始化棋盘对象(SAN依赖当前棋盘状态来判断棋子类型和必要的区分信息)
  2. 从UCI字符串创建Move对象
  3. 调用board.san()传入Move对象,得到SAN格式走法

示例代码:

import chess

# 初始化标准起始棋盘
board = chess.Board()

# 从UCI字符串生成Move实例
uci_move_str = "g1f3"
move = chess.Move.from_uci(uci_move_str)

# 转换为SAN格式
san_move = board.san(move)
print(san_move)  # 输出: Nf3

注意事项

  • 如果你已经在棋盘上执行过其他走法,需要保证当前棋盘状态和生成该UCI走法时的状态一致,否则SAN结果可能不准确(比如当有多个同类型棋子能走到目标位置时,SAN会添加额外的位置标识,比如Ngf3或Nbf3)
  • 如果你的move已经是chess.Move对象,直接传入board.san(move)即可,不用再从UCI字符串转换

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 18:55:24