Python-检查给定的邮政编码(或城市)是否在捷克共和国



我要对我们公司的数据库进行一些地址验证,问题是除了捷克共和国之外还有大约97个国家。他们是相当少的,没有必要验证他们。尽管如此,我还是需要以某种方式将它们分开,因为我目前用于验证的API只能向我发送未找到的响应。

所以我正在寻找一些工具来识别捷克的邮政编码,或城市,等等。

捷克共和国邮政编码的正则表达式是[0-9]{3} [0-9]{2}|[0-9]{5}

您可以简单地使用re module进行检查

import re
regex = r"[0-9]{3} [0-9]{2}|[0-9]{5}"
if re.match(zipcode, regex):
print("match")
else:
print("not a match")

您也可以使用pgeocode:https://pypi.org/project/pgeocode/

使用RegEx构建一个与Czest Republic邮政编码匹配的模式。

根据维基百科,捷克共和国的邮政编码如下:<3 numbers><space><2 numbers>

添加到Tal Folkman anwser中,您还应该添加\b以确保单词边界。

import re
zip_codes = [
"123 4",
"123 45",
"123 456",
"1234",
"12345",
"123456"
]
for zip_code in zip_codes:
match = re.match(pattern=r"(b[d]{3}[s][d]{2}b|b[d]{5}b)", string=zip_code)
if match:
print(f"Match for {zip_code}. Match result: {match.group()}.")
else:
print(f"No match for {zip_code}.")

输出:

No match for 123 4.
Match for 123 45. Match result: 123 45.
No match for 123 456.
No match for 1234.
Match for 12345. Match result: 12345.
No match for 123456.

编辑使用这个方便的网站https://regex101.com/以帮助您构建regex模式。

所以我自己找到了答案。

多亏了地理图书馆,我才能区分出所选地址是什么州。

输入:

from geopy.geocoders import Nominatim
geolocator = Nominatim(user_agent="geoapiExercises")
location = geolocation.geocode('city-name')
print(location.address)

输出(如果城市名称==布尔诺(:

Brno, okres Brno-město, Jihomoravský kraj, Jihovýchod, Česko

我还发现,你可以在你的语言中插入另一个城市名称,它无论如何都会找到,这很方便。

输出(如果城市名称==Mníchov(:

München, Bayern, Deutschland

相关内容

最新更新