我在我的项目中使用https://github.com/daviddrysdale/python-phonenumbers来修复所有错误号码。
import csv
import phonenumbers
with open('base.csv') as f:
data = list(csv.reader(f, delimiter=';'))
header_row = data[0]
header_row[8] = "Fixed Home Phone"
header_row[13] = "Fixed Mobile Phone"
for row in data[1:6]: # we go from first because there is header row
try:
print(f'Original row - {row[7]}')
x = phonenumbers.parse(row[7], "RU") #LOOK HERE! sometimes exception, due to blank field
print(x)
num2 = phonenumbers.parse(row[12], "RU")
print(f'Phone Num Script Response - {num2}') # sometimes exception is here
print("To national format - ", phonenumbers.format_number(x, phonenumbers.PhoneNumberFormat.E164))
row[8] = phonenumbers.format_number(x, phonenumbers.PhoneNumberFormat.E164)
row[13] = phonenumbers.format_number(y, phonenumbers.PhoneNumberFormat.E164)
except:
continue
writer = csv.writer(open("base_new.csv", 'w'))
for row in data:
writer.writerow(row)
评论“#LOOK HERE!”中的一些行 -in 代码在我的文件中为空。所以这个图书馆电话号码会引发异常。我正在努力修复它。
这是他们页面中的异常示例
>>> z = phonenumbers.parse("02081234567", None) # no region, no + => unparseable
Traceback (most recent call last):
File "phonenumbers/phonenumberutil.py", line 2350, in parse
"Missing or invalid default region.")
phonenumbers.phonenumberutil.NumberParseException: (0) Missing or invalid default region.
>>> z = phonenumbers.parse("gibberish", None)
Traceback (most recent call last):
File "phonenumbers/phonenumberutil.py", line 2344, in parse
"The string supplied did not seem to be a phone number.")
phonenumbers.phonenumberutil.NumberParseException: (1) The string supplied did not seem to be a phone number.
所以(因为我希望程序仍然可以处理错误的数字,所以我做了 TRY/Except 并添加了 continue。但它变成了我们的变量 x 给出异常并且 num2 被跳过,反之亦然)这对我来说是一场斗争。
请告知,如何正确处理异常以及添加什么,以便我的脚本可以在每一行中同时修复 x 和 num2?