Python将字符串中的单词与字符串列表相匹配

2024-09-28 23:25:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python新手,我想知道如何进行字符串比较

假设我有一个包含状态名的字符串列表,比如

states = ["New York", "California", "Nebraska", "Idaho"]

我还有另一个字符串,它包含一个地址

^{pr2}$

如何解析此地址字符串并找到与状态列表中的项匹配的项?在上面的例子中,加利福尼亚将是匹配的。那么,在匹配之后,如何提取"California"并将其存储为单独的字符串?在


Tags: 字符串列表new状态地址例子yorkstates
3条回答
>>> states = ["New York", "California", "Nebraska", "Idaho"]
>>> postal_addr = "1234 1st E St San Jose California 95112"
>>> first_match = next(state for state in states if state in postal_addr)
>>> first_match
'California'

但是,如果需要在单词边界处进行匹配,则最好使用regex。在

states = ["New York", "California", "Nebraska", "Idaho"]
postal_addr = "1234 1st E St San Jose California 95112"

result = None
for state in states:
    if state in postal_addr:
        result = state

print(result)

不幸的是,这也将匹配包含州名的单词,如Idahoba。在

我会的

matches = [ s for s in states if s in postal_addr ]

然后,如果要从邮政地址获取字符串:

^{pr2}$

编辑:…但这对于城市名称包含不同状态的城市/州组合无效,例如在本例中,postal_adr = '1 Arrowhead Dr, Kansas City, Missouri 64129'和{}等

import re
if matches:
    extracted = [(re.search(m, postal_addr).start() , m) for m in matches ]
    extracted = sorted( extracted )[-1][1]

相关问题 更多 >