考虑到我使用的数据源非常脏,并且可以在“电话号码”字段中包含一些以下内容;
我正在做一个大规模的进口,想确保只是不打扰这些。所以我要过滤一个类来格式化数字,但我也要验证它,如果它不是一个数字,就扔掉它。
class PhoneNumber:
def __init__( self, number_raw ):
number = re.sub('[^0-9]', '', number_raw)
self.area_code= number[ 0:3 ]
self.exchange = number[ 3:6 ]
self.line = number[ 6:13 ]
def __str__( self ):
return "({0}) {1}-{2}".format( self.area_code, self.exchange, self.line )
有几点需要考虑:
我想我可以这样做,然后用if语句来传递
False
如果这不是一个有效的数字,但我觉得这可能是草率的。
有什么更好的方法来验证它只是数字输入,如果字符串输入,则将其抛出&return
None
?
潜在解决方案1:
class PhoneNumber:
def __init__( self, number_raw ):
validation = re.match('[^0-9]', '', number_raw)
if validation is False:
return None
else:
number = re.sub('[^0-9]', '', number_raw)
self.area_code= number[ 0:3 ]
self.exchange = number[ 3:6 ]
self.line = number[ 6:13 ]
self.full_number = number
def __str__( self ):
return "({0}) {1}-{2}".format( self.area_code, self.exchange, self.line )
潜在溶质2:
class PhoneNumber:
def __init__( self, number_raw ):
number = re.sub('[^0-9]', '', number_raw)
self.area_code = number[ 0:3 ]
self.exchange = number[ 3:6 ]
self.line = number[ 6:13 ]
self.og_number = number_raw
def __str__( self ):
validation = re.match('[^0-9]', '', self.og_number)
if validation is False:
return None
return "({0}) {1}-{2}".format( self.area_code, self.exchange, self.line )