如何将PGN转换为长代数符号(在python中)?


12

我想读取一个PGN文件,然后前进到某个特定的移动编号,并将其提供给UCI引擎。事实证明,引擎使用长代数表示法工作,而PGN是短代数表示法。进行转换的简便方法是什么?即从SAN到LAN。

我意识到生成长代数符号需要了解棋盘状态和下棋规则,所以我不想再写一遍!当然,这样的东西一定已经存在-命令行程序或模块(最好在python中)。


2
这个问题似乎离题,因为它与编程有关,而不是与国际象棋有关。
托尼·恩尼斯

3
AFAIK,最明确的meta讨论与meta.chess.stackexchange.com/q/100/167有关,是否在主题上。当时的共识似乎是应将此类问题视为主题。(注意:我不是在争论一种方法,所以不要随便跟我讨论。但是请随时为该meta线程做出贡献。)
ETD 2013年

Answers:


7

这是您要寻找的吗?PGN提取(命令行实用程序) http://www.cs.kent.ac.uk/people/staff/djb/pgn-extract/

我可以在功能文档中看到一个标志,该标志可能会有所帮助:

  • -W[cm|epd|halg|lalg|elalg|san|uci]-指定要使用的输出格式
    -Whalg是带连字符的长代数。
    -Wlalg是长代数
    -Welalg[PNBRQK]增强了长代数。使用字符PNBRQK作为语言

2
对于提出要求的人来说,最好的选择可能-Wuci是他们是否要将其提供给UCI引擎。
Vegard
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.