以下是我为加拿大邮政编码验证脚本编写的代码。它应该在一个文件中读取:
123 4th Street, Toronto, Ontario, M1A 1A1
12456 Pine Way, Montreal, Quebec H9Z 9Z9
56 Winding Way, Thunder Bay, Ontario, D56 4A3
34 Cliff Drive, Bishop's Falls, Newfoundland B7E 4T
输出电话号码是否有效。当邮政编码1和2有效且3和4无效时,我的所有邮政编码都将返回无效。
import re
filename = input("Please enter the name of the file containing the input Canadian postal code: ")
fo = open(filename, "r")
for line in open(filename):
regex = '^(?!.*[DFIOQU])[A-VXY][0-9][A-Z]●?[0-9][A-Z][0-9]$'
m = re.match(regex, line)
if m is not None:
print("Valid: ", line)
else: print("Invalid: ", line)
fo.close
答案 0 :(得分:0)
我不保证我完全理解the format,但这似乎有效:
\b(?!.{0,7}[DFIOQU])[A-VXY]\d[A-Z][^-\w\d]\d[A-Z]\d\b
您还可以通过此更改修复您的(至少在示例中):
(?!.*[DFIOQU])[A-VXY][0-9][A-Z].?[0-9][A-Z][0-9]
(除了它接受一个被禁止的连字符)
但在这种情况下,显式模式可能是最好的:
\b[ABCEGHJ-NPRSTVXY]\d[ABCEGHJ-NPRSTV-Z]\s\d[ABCEGHJ-NPRSTV-Z]\d\b
完成的是其他步骤的1/4。
答案 1 :(得分:0)
此通用代码可以为您提供帮助
import re
PIN = input("Enter your Address")
PIN1= PIN.upper()
if (len(re.findall(r'[A-Z]{1}[0-9]{1}[A-Z]{1}\s*[0-9]{1}[A-Z]{1}[0-9]{1}',PIN1)))==1:
print("valid")
else:
print("invalid")
我们正在接受用户的输入。因此,用户有很多机会可以输入邮政编码而不能使用空格(使用小写字母)。所以这段代码可以帮助您 1)间距不合适 2)小写字母