gpt4 book ai didi

Python:正则表达式迭代以匹配列表元素中的单词

转载 作者:太空宇宙 更新时间:2023-11-03 15:22:44 25 4
gpt4 key购买 nike

设置

抓取伦敦的住房广告,我获取每个广告的单元素列表中的地址,例如

address=['Brockham Drive, Brixton SW2']

我有一本字典,将伦敦各行政区与其所在地区联系起来,例如

boroughs={ 
'Barking_Dagenham':['Barking', ..., 'Rush Green'],
'Barnet':['Arkley', ..., 'Woodside Park'],

'Westminster':['Bayswater', ..., 'Westminster'],
}

<小时/> 问题

我想检查地址中是否包含地区名称。如果该地区位于address中,那么我想创建变量districtborough来指示该地区及其相应的行政区。

<小时/> 代码尝试

(1)

for bor in boroughs.keys(): # loop over boroughs
for distr in boroughs[bor]: # loop over borough's districts
if distr in address[0]: # assign if district in address
district = distr
borough = bor
break
else:
district = 'unknown'
borough = 'unknown'

(1) 不起作用。也就是说,所有内容都被标记为'unknown'

我不确定我是否正确地执行了 break 操作,也不确定 if distr in address[0]: 是否是在以下情况下检查匹配的正确方法:迭代。

(2)

for bor in boroughs.keys(): # loop over boroughs
for distr in boroughs[bor]: # loop over borough's districts
district = re.search(r'\b'distr'\b', address[0]):
borough = ?
break
else:
district = 'unknown'
borough = 'unknown'

对于(2),我不确定在使用“\b”时如何正确迭代“bor”。不确定当迭代产生正确的地区匹配时如何分配相应的行政区。另外,不确定我是否应该使用(2)而不是(1)。

我应该使用哪种方法,如何才能至少使用其中一种方法?

最佳答案

您的代码尝试 #1 是正确的,但缺少一个关键元素。您只是打破了内部 for 循环,但随后您的代码继续循环通过外部 for 循环。添加一个变量来检查是否发现跳出了外层for循环。

found = False

for bor in boroughs.keys(): # loop over boroughs
for distr in boroughs[bor]: # loop over borough's districts
if distr in address[0]: # assign if district in address
district = distr
borough = bor
found = True
break
else:
district = 'unknown'
borough = 'unknown'
if found:
break

关于Python:正则表达式迭代以匹配列表元素中的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43395245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com