从PGN文件中提取国际象棋时间控制信息的正则表达式解决方案
从PGN文件中提取国际象棋时间控制信息的正则表达式解决方案
嘿,我来帮你搞定这个PGN时间控制信息提取的问题!你之前尝试的正则表达式存在一些语法问题,比如错误使用了字符组[],而且没有设置正确的捕获分组来分离初始时间和增量值。
正确的正则表达式方案
我们需要精准匹配[TimeControl "X+Y"]这样的格式(X是初始秒数,Y是每步增量秒数),正确的正则模式如下:
r'\[TimeControl "(\d+)\+(\d+)"\]'
简单拆解下这个模式的逻辑:
\[和\]:匹配方括号,因为方括号在正则里属于特殊字符,必须加反斜杠转义TimeControl ":精确匹配固定的文本前缀(\d+):第一个捕获分组,匹配一个或多个数字,对应初始时间值\+:匹配加号,加号是正则里的特殊量词,同样需要转义(\d+):第二个捕获分组,匹配一个或多个数字,对应每步增量值":匹配结尾的双引号
完整的Python代码示例
把这个正则整合到代码里,就能轻松提取并转换你需要的两个变量了:
import re def extract_time_control(pgn_content): time_control_match = re.search(r'\[TimeControl "(\d+)\+(\d+)"\]', pgn_content) if time_control_match: initial_time, increment = time_control_match.groups() return int(initial_time), int(increment) else: return None, None
调用这个函数时,传入PGN内容字符串,就能得到转成整数的初始时间和增量值;如果没找到匹配的时间控制字段,就返回(None, None)。
备注:内容来源于stack exchange,提问作者Zen4ttitude
相关产品推荐
相关产品推荐

