代码之家  ›  专栏  ›  技术社区  ›  Joe

状态缩写的正则表达式(python)

  •  4
  • Joe  · 技术社区  · 16 年前

    我正在尝试使用python创建一个正则表达式,该正则表达式与字符串中的美国州缩写匹配。

    缩写可以采用以下格式:

    CA
    Ca
    

    Boulder, CO 80303
    Boulder, Co
    Boulder CO
    ...
    

    这就是我所拥有的,显然没有那么好用。我对正则表达式不是很在行,谷歌也没怎么出现。

    pat = re.compile("[A-Za-z]{2}")
    st = pat.search(str)
    stateAbb = st.group(0)
    
    2 回复  |  直到 16 年前
        1
  •  10
  •   Max Shawabkeh    16 年前

    一种简单可靠的方法是列出所有状态:

    states = ['IA', 'KS', 'UT', 'VA', 'NC', 'NE', 'SD', 'AL', 'ID', 'FM', 'DE', 'AK', 'CT', 'PR', 'NM', 'MS', 'PW', 'CO', 'NJ', 'FL', 'MN', 'VI', 'NV', 'AZ', 'WI', 'ND', 'PA', 'OK', 'KY', 'RI', 'NH', 'MO', 'ME', 'VT', 'GA', 'GU', 'AS', 'NY', 'CA', 'HI', 'IL', 'TN', 'MA', 'OH', 'MD', 'MI', 'WY', 'WA', 'OR', 'MH', 'SC', 'IN', 'LA', 'MP', 'DC', 'MT', 'AR', 'WV', 'TX']
    regex = re.compile(r'\b(' + '|'.join(states) + r')\b', re.IGNORECASE)
    

    如果您想要非美国州,请使用其他州列表。

        2
  •  1
  •   SilentGhost    16 年前
    re.search(r'\b[a-z]{2}\b', subject, re.I)
    

    不过,它会找到双字母的城镇名称