有一个地址列表,例如:
Абрамцевская улица, дом 16 Б
ул. Абрамцевская, д.3
ул Абрамцевская 5
Абрамцевская ул., 5/2
还有一个类:
class Address:
def __init__(self, type, type_house, number_house):
self.type = type # улица или шоссе
self.name = name # название улицы
self.type_house = 'дом'
self.number_house = number_house # все, что справа от названия улицы
如何将字符串拆分为类的组件字段Address
?我尝试通过用符号分割字符串中的单词,然后循环遍历结果列表以搜索关键字,例如ул, улица
等。然后按关键字搜索дом, д
。根据元素的索引或不存在,我找到了街道的名称。不知何故,一切都不是很笨拙,也许有人有更有趣的实现选项
有一个现成的Natasha库用于类似的任务(从文本中提取事实),但自从我尝试使用它以来,它已经发生了相当大的变化。将地址解析器交付到某个地方,您必须按照自述文件中的建议安装旧版本:
我在这个版本的命令中安装了它(你需要把它放在引号中,因为符号
<
是输入重定向运算符)示例代码:
结论:
此外,要填写您的对象,您需要遍历
parts
提取的地址字段中的列表,检查每个元素的类型,然后将其写入对象的相应字段中。如果这方面有困难,我可以稍后草拟一个如何做到这一点的例子。
UPD。事实证明,现在调用了地址解析器
AddrParser
,但它并不总能在您的数据中找到门牌号码,因此使用旧版本可能是有意义的。代码示例(版本natasha == 1.4.0
):结论: