You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 15:41:11