社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

python-返回前验证电话号码

CodeSpent • 6 年前 • 1637 次点击  

考虑到我使用的数据源非常脏,并且可以在“电话号码”字段中包含一些以下内容;

  • 空(新标准)
  • !闭嘴!!
  • 没有人

我正在做一个大规模的进口,想确保只是不打扰这些。所以我要过滤一个类来格式化数字,但我也要验证它,如果它不是一个数字,就扔掉它。

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 )
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/43841
文章 [ 2 ]  |  最新文章 6 年前