【发布时间】:2013-09-23 18:11:55
【问题描述】:
我正在通过 Expedia API 提取酒店名称,并与另一家旅行服务提供商交叉引用结果。
我遇到的问题是,许多酒店名称在 Expedia API 上的显示与在其他提供商中显示的不同,我无法找到匹配它们的好方法。
我将两者的结果与房价一起存储在单独的字典中。因此,例如,Expedia 在立陶宛搜索维尔纽斯的结果可能如下所示:
expediadict = {'Ramada Hotel & Suites Vilnius': 120, 'Hotel Rinno': 100,
'Vilnius Comfort Hotel': 110}
但来自其他提供商的结果可能如下所示:
altproviderdict = {'Ramada Vilnius': 120, 'Rinno Hotel': 100,
'Comfort Hotel LT': 110}
我唯一能想到的就是删除“Hotel”、“Vilnius”、“LT”和“Lithuania”的所有实例,然后测试 expediadict 键的一部分是否与 altprovderdict 键的一部分匹配。这看起来很混乱而且不是很 Pythonic,所以我想知道你们中是否有人有更清晰的想法?
【问题讨论】:
-
你听说过正则表达式吗?也许看看
re模块。 -
@EdgarAroutiounian 我认为这根本不是解决这个问题的正确方法......
-
你有一个更可能是通用和唯一的标识符吗?比如电话号码、街道地址、一些标准化的身份证号码等?您可以加入酒店名称以外的其他内容。
-
正则表达式不会帮助这个特定的实例。 @Robᵩ 遗憾的是我无法访问 API,所以我正在抓取。我可以那样做,但是会很费力(而且我注意到经常连地址都不一样!)
标签: python string api dictionary