Python - 检查给定的邮政编码(或城市)是否在捷克共和国
Python - check if given zip code (or city) is in Czech Republic
我要对我们公司的数据库进行一些地址验证,问题是除了捷克共和国之外还有 97 个左右的国家。他们是少数,不需要验证。我仍然需要以某种方式将它们分开,因为我目前用于验证的 API 只能向我发送未找到的响应。
所以我正在寻找一些工具来识别捷克邮政编码或城市等。在 python。
捷克邮政编码的正则表达式是[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>
添加到 您还应该添加 \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/ 来帮助您构建正则表达式模式。
所以我自己找到了答案。
感谢 geopy 库,我可以区分所选地址是哪个州。
输入:
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
我要对我们公司的数据库进行一些地址验证,问题是除了捷克共和国之外还有 97 个左右的国家。他们是少数,不需要验证。我仍然需要以某种方式将它们分开,因为我目前用于验证的 API 只能向我发送未找到的响应。
所以我正在寻找一些工具来识别捷克邮政编码或城市等。在 python。
捷克邮政编码的正则表达式是[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>
添加到
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/ 来帮助您构建正则表达式模式。
所以我自己找到了答案。
感谢 geopy 库,我可以区分所选地址是哪个州。
输入:
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