Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在数据库中组合不同的名称_Python_Regex_Database_Chess - Fatal编程技术网

Python 在数据库中组合不同的名称

Python 在数据库中组合不同的名称,python,regex,database,chess,Python,Regex,Database,Chess,我正在研究一个有超过一百万个游戏的国际象棋数据库。我对识别不同玩家的一些特征感兴趣。我遇到的问题是,每个玩家都有几个标识 比如说, “Carlsen,M.”,“Carlsen,Ma”,“Carlsen,Magnus”和“Magnus Carlsen” 全部对应于播放器“Magnus Carlsen” 此外,还有其他玩家与卡尔森同名,但名字不同,如“卡尔森,英格丽德·奥恩”和“卡尔森,杰斯珀” 我需要识别数据库中所有与每个特定玩家对应的不同名称,并将它们组合起来。有没有办法用Python做到这一点

我正在研究一个有超过一百万个游戏的国际象棋数据库。我对识别不同玩家的一些特征感兴趣。我遇到的问题是,每个玩家都有几个标识

比如说,

“Carlsen,M.”
“Carlsen,Ma”
“Carlsen,Magnus”
“Magnus Carlsen”
全部对应于播放器
“Magnus Carlsen”

此外,还有其他玩家与卡尔森同名,但名字不同,如
“卡尔森,英格丽德·奥恩”
“卡尔森,杰斯珀”


我需要识别数据库中所有与每个特定玩家对应的不同名称,并将它们组合起来。有没有办法用Python做到这一点?

@Ev.Kounis解决方案简单有效,我自己也成功地使用过。大多数时候,我们只关心顶尖的棋手。我就是这么做的:

  • 创建了一个简单的函数,如@Ev.Jounis
  • 我还扫描了球员的评级。例如,在我的数据库中有几个“卡尔森”球员,但他们的民盟评级不会超过2700
  • 我还搜索游戏中的其他玩家。如果我对加里·卡斯帕罗夫感兴趣,他就不会和一个1600级的对手打俱乐部比赛
  • 获得更好的数据库。棋类游戏和TWIC比Chessbase有更好的质量
您可以尝试使用正则表达式,但这是不必要的。有一个简单的模式玩家名称的不同之处:

“卡尔森,M”=“马格努斯·卡尔森”


这适用于数据库中的其他玩家。保存正则表达式,直到您真正需要它为止。

@Ev.Kounis解决方案简单有效,我自己也成功地使用了它。大多数时候,我们只关心顶尖的棋手。我就是这么做的:

  • 创建了一个简单的函数,如@Ev.Jounis
  • 我还扫描了球员的评级。例如,在我的数据库中有几个“卡尔森”球员,但他们的民盟评级不会超过2700
  • 我还搜索游戏中的其他玩家。如果我对加里·卡斯帕罗夫感兴趣,他就不会和一个1600级的对手打俱乐部比赛
  • 获得更好的数据库。棋类游戏和TWIC比Chessbase有更好的质量
您可以尝试使用正则表达式,但这是不必要的。有一个简单的模式玩家名称的不同之处:

“卡尔森,M”=“马格努斯·卡尔森”


这适用于数据库中的其他玩家。保存正则表达式,直到您确实需要这样做。

您可以尝试创建一个
别名生成器
函数,该函数使用一个输入名称,例如“Magnus Carlsen”,并创建上面提供的所有这些不同组合。对所有玩家都这样做,检查数据库,看看有什么没有被拾取,使生成器更复杂,并重复。既然你能用Python编写代码,就要运用你的技能;这里没有神奇的解决方案,我担心如果这是一个大型国际象棋数据库,您肯定会有歧义,其中相同的标识符字符串用于两个不同的玩家。Ev。Kounis这确实是一个解决方案,但不幸的是数据库太大了(大约100000名玩家),所以它不实用,我感到震惊。谢谢你的回答!您可以尝试创建一个使用输入名称的
别名生成器
函数,例如“Magnus Carlsen”,并创建上面提供的所有这些不同组合。对所有玩家都这样做,检查数据库,看看有什么没有被拾取,使生成器更复杂,并重复。既然你能用Python编写代码,就要运用你的技能;这里没有神奇的解决方案,我担心如果这是一个大型国际象棋数据库,您肯定会有歧义,其中相同的标识符字符串用于两个不同的玩家。Ev。Kounis这确实是一个解决方案,但不幸的是数据库太大了(大约100000名玩家),所以它不实用,我感到震惊。谢谢你的回答!