re.Scanner面白い。
re.Scanner面白い。
re.Scanner
簡単に文字列を分解できる。
import re class WordScanner(re.Scanner): def __init__(self): # super(WordScanner, self).__init__([ #こちらは動かない。 re.Scanner.__init__(self, [ (r"\S+", lambda sc, s : s), # word (r"[\n\s]+", lambda sc, s : None) # skip ], re.M) # multiline print(WordScanner().scan("foo bar baz\n yee")[0]) # => ['foo', 'bar', 'baz', 'yee']
もちろん、これくらいならstr#splitでも十分だけれど。
jsonパーサ(もどき)?
遊びでjsonパーサ(もどき)を作ってみた。文字列をパースして辞書で返す。
ついでにabcも使ってみた。文字列のクォートに対応してなかったりするのでjsonのサブセットだと思う。
code
output
% python re_json.py > {} > {'foo': 10, 'voo': True} > {'foo': True, 'boo': 10} > {'arr': [1, 2, 3, 4, 5, 6], 'obj': {'y': 20, 'x': 10, 'val': None}, 'val': 10} > {'item': [{'itemPrice': 300, 'itemCode': 91, 'itemName': '\xe5\xa1\xa9\xe3\x83\xa9\xe3\x83\xbc\xe3\x83\xa1\xe3\x83\xb3'}, {'itemPrice': 290, 'itemCode': 94, 'itemName': '\xe5\x91\xb3\xe5\x99\x8c\xe3\x83\xa9\xe3\x83\xbc\xe3\x83\xa1\xe3\x83\xb3'}, {'itemPrice': 320, 'itemCode': 95, 'itemName': '\xe8\xb1\x9a\xe9\xaa\xa8\xe3\x83\xa9\xe3\x83\xbc\xe3\x83\xa1\xe3\x83\xb3'}]}
文字化けしてしまっている><。