Python 如何让用户输入状态缩写和拒绝或接受与缩写列表匹配?

Python 如何让用户输入状态缩写和拒绝或接受与缩写列表匹配?,python,regex,python-2.7,match,Python,Regex,Python 2.7,Match,这似乎是一个足够简单的问题,但我很难做到这一点。其他线程讨论匹配和RE模块,但我无法让它工作 def get_lead_state(): print "" lead_state = raw_input(" Enter the lead's two letter state abbreviation ") lead_state = lead_state.upper() if None == re.match("[AL,AK,AZ,AR,CA,CO,CT,DE,

这似乎是一个足够简单的问题,但我很难做到这一点。其他线程讨论匹配和RE模块,但我无法让它工作

def get_lead_state():
    print ""
    lead_state = raw_input("    Enter the lead's two letter state abbreviation ")
    lead_state = lead_state.upper()
    if None == re.match("[AL,AK,AZ,AR,CA,CO,CT,DE,FL,GA,HI,ID,IL,IN,IA,KS,KY,LA,ME,MD,MA,MI,MN,MS,MO,MT,NE,NV,NH,NJ,NM,NY,NC,ND,OH,OK,OR,PA,RI,SC,SD,TN,TX,UT,VT,VA,WA,WV,WI,WY]", lead_state):
        print ""
        print " == msg ==> ERROR! abbreviation not recognized!"
        print " == msg ==> Try again"
        lead_state = get_lead_state()

    return lead_state
出于某种原因,这允许ZZ或VTA等输入通过。我还尝试将
^
放在缩写词列表之前,并尝试将
*
$
放在末尾。我真的不知道为什么我不能让它工作

--
另一方面,如果它找到了匹配项,为什么不
re.match
返回
True

您可以像这样使用
集合

valid = {"AL","AK","AZ","AR","CA","CO","CT","DE","FL","GA","HI","ID","IL","IN","IA","KS","KY","LA","ME","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","OH","OK","OR","PA","RI","SC","SD","TN","TX","UT","VT","VA","WA","WV","WI","WY"}
if not lead_state.upper() in valid:

您可以像这样使用
集合

valid = {"AL","AK","AZ","AR","CA","CO","CT","DE","FL","GA","HI","ID","IL","IN","IA","KS","KY","LA","ME","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","OH","OK","OR","PA","RI","SC","SD","TN","TX","UT","VT","VA","WA","WV","WI","WY"}
if not lead_state.upper() in valid:

r'[AL,AK]'表示匹配一个字符,即A、L、逗号、A、K等等

只需使用查找列表:

states = ["AL", "AK", "AZ", "AR", "CA", "CO", "CT", "DE", "FL", "GA", "HI",
          "ID", "IL", "IN", "IA", "KS", "KY", "LA", "ME", "MD", "MA", "MI",
          "MN", "MS", "MO", "MT", "NE", "NV", "NH", "NJ", "NM", "NY", "NC",
          "ND", "OH", "OK", "OR", "PA", "RI", "SC", "SD", "TN", "TX", "UT",
          "VT", "VA", "WA", "WV", "WI", "WY"]
if lead_state.upper().strip() not in states:
    print " == msg ==> ERROR! abbreviation not recognized!"

r'[AL,AK]'表示匹配一个字符,即A、L、逗号、A、K等等

只需使用查找列表:

states = ["AL", "AK", "AZ", "AR", "CA", "CO", "CT", "DE", "FL", "GA", "HI",
          "ID", "IL", "IN", "IA", "KS", "KY", "LA", "ME", "MD", "MA", "MI",
          "MN", "MS", "MO", "MT", "NE", "NV", "NH", "NJ", "NM", "NY", "NC",
          "ND", "OH", "OK", "OR", "PA", "RI", "SC", "SD", "TN", "TX", "UT",
          "VT", "VA", "WA", "WV", "WI", "WY"]
if lead_state.upper().strip() not in states:
    print " == msg ==> ERROR! abbreviation not recognized!"