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文件

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Spring Hibernate NoClassDefFoundError CurrentSessionContext   Java中的While循环不会对文档的最后一行执行操作   java如何禁用javafx窗口   java有哪种方法的功能与retain all相反?   统计Java基于箱线图生成随机数   Java:PropertyResourceBundle   java编译/捕获异常   日志记录如何使用java log4j将日志文件保存在monthwise文件夹中?   气泡排序Java气泡排序   java无法使用无服务器本地调用AWS Lambda   java在更新JLabel文本时遇到问题;与Netbeans 6.9的GUI生成器相关   java自动设置一个类中的所有字段(private)   java将列表<BuffereImage>转换为图像