python 如何匹配列表中某个单词,Python-将字符串中的单词与字符串列表匹配

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]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值