如何在chess-python库中转换棋子走法记谱方式?
将UCI走法转换为代数记谱法(SAN)
你用反方法了——board.parse_san()是把SAN格式转成UCI格式的,比如输入Nf3会返回g1f3,和你的需求正好相反。
要把UCI格式(比如g1f3)转成SAN格式(比如Nf3),应该用board.san()方法,步骤如下:
- 初始化棋盘对象(SAN依赖当前棋盘状态来判断棋子类型和必要的区分信息)
- 从UCI字符串创建
Move对象 - 调用
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
相关产品推荐
相关产品推荐

