| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- from pprint import pprint
- from xml.etree.ElementTree import Element, SubElement, dump, tostring, ElementTree
- import xml.dom.minidom
- def process_pbn(xml_root):
- order_of_suits = ["Spades", "Hearts", "Diamonds", "Clubs"]
- with open('hands.pbn', 'r') as f:
- for line in f:
- if '[Deal ' in line:
- # print('{}'.format(line))
- # print('{}'.format(line[7]))
- print('{}'.format(line[9:-3]))
- first_hand = line[7]
- assert first_hand in ['N', 'E', 'S', 'W'], \
- "Cannot determine first hand. Got {} but expected 'N', 'E', 'S' or 'W'".format(first_hand)
- order_of_hands = []
- if first_hand == 'N':
- order_of_hands = ["North", "East", "South", "West"]
- hands = line[9:-3].split(' ')
- assert len(hands) == 4, "There are no 4 hands in PBN string {}".format(line[9:-3])
- xml_deal = Element("Deal")
- dump(xml_deal)
- for hand in hands:
- i = 0
- if '.' in hand:
- xml_hand = Element("Hand")
- xml_hand.attrib["Position"] = order_of_hands[i]
- suits = hand.split('.')
- assert len(suits) == 4, "There are no 4 suits in PBN hand {}".format(suits)
- j = 0
- for suit in suits:
- xml_hand.attrib[order_of_suits[j]] = suit
- j += 1
- dump(xml_hand)
- SubElement(xml_deal, xml_hand)
- # dump(xml_deal)
- i += 1
- SubElement(xml_root, xml_deal)
- if __name__ == '__main__':
- xml_dealsets = Element("DealSets")
- process_pbn(xml_dealsets)
- dump(xml_dealsets)
|