I'm new to python and I was wondering how string comparison is done
Let's say I have a list of strings containing state names like
states = ["New York", "California", "Nebraska", "Idaho"]
I also have another string that contains an address like
postal_addr = "1234 1st E St San Jose California 95112"
How do I parse this address string and find a match with the items in the states list? In the above example, California will be a match. How do I then, after matching, extract "California" and store it as a separate string?
解决方案
I would do
matches = [ s for s in states if s in postal_addr ]
Then, if you want to get the string from the postal address:
import re
if matches:
extracted = re.findall( matches[0], postal_addr)[0]
EDIT: ..but this won't work for city/state combos where the city name contains a different state, for example if postal_adr = '1 Arrowhead Dr, Kansas City, Missouri 64129' and states = ["New York", "California", "Nebraska", "Idaho", "Missouri", "Kansas"] etc. In this case
import re
if matches:
extracted = [(re.search(m, postal_addr).start() , m) for m in matches ]
extracted = sorted( extracted )[-1][1]