我在python(熊猫),databricks中有以下代码。这是很好的工作,但它没有过滤出无效的电话号码。
代码遵循模式,过滤出家庭和移动电话号码。
import pandas as pd
import re
from pyspark.sql.functions import lit
df = Phonevalidation
# function to check the phone number pattern
def isValid(s):
Pattern = re.compile("(0|44)?[7-9][0-9]{9}")
if(Pattern.match(s)):
return 'Mobile Number'
else: return 'Home phone'
#UDF Register
PhType = udf(isValid)
df1 = Phonevalidation.withColumn('Phtype' ,PhType('Phonenumber') )
display(df1)我希望过滤掉长度>10或<10的无效电话号码,或者像0000000或11111这样的号码被标记为无效。
发布于 2019-08-20 09:17:16
您目前使用的代码以9位数字标记,以0或英国国家代码开头,然后以初始7、8或9作为移动号码,但其他所有内容(包括畸形的数字)都用作家庭号码:
Pattern = re.compile("(0|44)?[7-9][0-9]{9}")
if(Pattern.match(s)):
return 'Mobile Number'
else: return 'Home phone'如果你想要的是美国的数字,grep with regex for phone number可能会有所帮助。
我希望过滤掉长度>10或<10的无效电话号码,或者像0000000或11111这样的号码被标记为无效。
对于您的想法的第一部分,您可以使用像Pattern = re.compile("[0-9]{10}")这样的模式,第二部分,我将把它放入一个伪代码中,例如
if (Pattern.match(s)):
if (s != '0000000000' or s != '1111111111'):
return: 'Fitting your criteria'
else: return 'Not valid' https://stackoverflow.com/questions/57569928
复制相似问题