pgn parser用于分析.pgn chess文件
pgn-parser的Python项目详细描述
pgn解析器
用于将pgn文件解析为python友好格式的python库。
解析器是用canopy构建的,其余的是python。
pgn规范基于saremba.de上的规范。
设置
安装
确保安装了python 3。
pip install pgn_parser
然后像这样导入:
from pgn_parser import pgn, parser
测试
这些测试是使用pytest和behave编写的,必须先安装它们:
pip install pytest behave
对于运行单元测试:
pytest
对于运行行为测试:
behave
建筑PIP可分配
make build
使用
分析pgn文件
要解析pgn,只需将字符串与actions()一起提供给parser.parse 解析器用来创建python结构的。
>>>frompgn_parserimportparser,pgn>>>game=parser.parse("1. e4 e5",actions=pgn.Actions())>>>print(game.move(1))1.e4e5>>>print(game.move(1).black.san)e5
游戏
在分析一个游戏之后,它将被构造成以下类 彼此嵌套:
游戏:整个游戏的容器 从游戏中获得特定移动(此处为5)
game.move(5)
检索moveText
game.movetext
访问标记对
game.tag_pairs
访问最终分数
game.score
moveText:所有移动的容器,例如“1”。C4 C5 2号。E4 E5英寸 它只是一个列表,因此可以遍历以检索移动。 请注意,moveText[0]将是解析的第一个移动,是否为1。或者31岁。所以 如果需要moveNumber,请使用game.move()
移动:移动是一个移动编号,可选为白色和/或黑色层
ply:是移动的单位,用标准代数表示法(san)。 例如,“1.E4 E5”中的黑色层是E5
标记对:所有标记对对象的有序字典。 它们是按顺序排列的,因此它保持读入的顺序,但将更改为 七标签花名册订单,如果打印/串。
标记对
要将有关游戏的元数据存储在标记对中,请执行此操作
pgn文件的头
["Site" "github.com"]
在python中是这样表示的
game.tag_pairs["Site'] == "github.com"
移动
每一步都有一个移动数和两层,白色和黑色。 每个层可以是任何内容,从空到有注释、变化和 nags。
moves = "1. e4 $1 {a comment} (1.d5)"
表示如下:
m1=game.move(1)_assertm1.white.san=="e4"assertm1.white.comment=="a comment"assertm1.white.nags[0]=="$1"assertm1.white.variations[0].move(1).white.san=="d5"
如果一个层是空的,那么它的san将被表示为。
限制
不支持RAV风格的变化 在一个解析中不支持多个游戏,必须是单个游戏 不尝试分析周转时间,因为这不在原始规范中,我是 不知道该支持什么。
作者
- brett bates-initial work-github
许可证
这个项目是在麻省理工学院的许可下授权的-详细信息请参见LICENSE.md文件