-1

我在我的项目中使用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?

4

1 回答 1

0

您的异常处理程序应该在x = phonenumbers.parseand周围num= = phonenumbers.parse。当捕获到异常时,只需将x或设置num为您想要的替代值。

于 2021-08-31T13:07:00.817 回答