如何在Python中拆分并格式化扑克手牌历史字符串?
扑克手牌历史拆分与格式化
需求概述
将包含两轮对局的扑克手牌历史字符串拆分,分别对应牌桌1和牌桌2的对局结果,格式化每位玩家在每轮中的胜负及奖金信息:
- 玩家在牌桌1的结果对应字符串中第一个胜负描述
- 玩家在牌桌2的结果对应字符串中第二个胜负描述
示例输入
site_initial_handhistory = ''' 牌桌1 [6s 2s Td 5h 3c] 牌桌2 [6s 2s Td 4h 7s] 座位1: MrBaguette 亮出 [5c 6c] 获胜($398.38),随后落败 座位4: mr.Anderson (按钮位) 亮出 [As 6d] 落败,随后获胜($398.37)'''
期望输出
*** 总结 *** 牌桌1 [6s 2s Td 5h 3c] 座位1: MrBaguette 亮出 [5c 6c] 获胜 $398.38 座位4: mr.Anderson (按钮位) 亮出 [As 6d] 落败 牌桌2 [6s 2s Td 4h 7s] 座位1: MrBaguette 亮出 [5c 6c] 落败 座位4: mr.Anderson (按钮位) 亮出 [As 6d] 获胜 $398.37
Python实现代码
def format_hand_history(hand_history): # 清理空行并拆分每行 lines = [line.strip() for line in hand_history.strip().split('\n') if line.strip()] # 分离牌桌信息和玩家信息 boards = [line for line in lines if line.startswith('牌桌')] players = [line for line in lines if line.startswith('座位')] result = ['*** 总结 ***'] # 处理牌桌1的结果 result.append(boards[0]) for player_line in players: # 拆分玩家基础信息、牌桌1结果、牌桌2结果 seat_card, outcomes = player_line.split(' 亮出 ') card_info, res_part = outcomes.split(' ', 1) res1, _ = res_part.split(',随后') # 格式化获胜信息,提取奖金 if '获胜' in res1: amount = res1.split('($')[1].split(')')[0] res1 = f'获胜 ${amount}' result.append(f'{seat_card} 亮出 {card_info} {res1}') # 处理牌桌2的结果 result.append(boards[1]) for player_line in players: seat_card = player_line.split(' 亮出 ')[0] card_info = player_line.split('亮出 ')[1].split(' ')[0] # 提取牌桌2的结果 _, res2 = player_line.split(',随后') if '获胜' in res2: amount = res2.split('($')[1].split(')')[0] res2 = f'获胜 ${amount}' result.append(f'{seat_card} 亮出 {card_info} {res2.strip()}') return '\n'.join(result) # 测试执行 if __name__ == '__main__': site_initial_handhistory = ''' 牌桌1 [6s 2s Td 5h 3c] 牌桌2 [6s 2s Td 4h 7s] 座位1: MrBaguette 亮出 [5c 6c] 获胜($398.38),随后落败 座位4: mr.Anderson (按钮位) 亮出 [As 6d] 落败,随后获胜($398.37)''' print(format_hand_history(site_initial_handhistory))
内容的提问来源于stack exchange,提问作者Maria
相关产品推荐
相关产品推荐

