What is the best way to match street addresses in a dataset in Python? I have a dataset of land parcels owned by the government and I am attempting to match street addresses to an existing list of government agencies. I've used fuzzy matching and used a regex that ignores casing and distinctions between direction (for example North and N are treated the same). 

However, the program ends up having a very poor matching rate, as a lot of the addresses are not getting matched. What are some other ways I should try to improve the matching rate?
You can try using this to help:
https://github.com/openvenues/libpostal

libpostal looks like it can normalize across various geographic styles with the expand addresses functions.