1
1
import re
2
- import phonenumbers
3
2
4
3
5
4
def __clean_csv_headers (header ):
@@ -71,28 +70,32 @@ def __clean_csv_headers(header):
71
70
}
72
71
73
72
74
- def volgistics_address (street , index ):
73
+ def volgistics_address (index , street ):
75
74
result = ""
76
75
77
- if isinstance (street , str ):
78
- if " " in street :
79
- if index == 1 :
80
- result = " " .join (street .split ()[1 :])
81
- else :
82
- result = street .split ()[index ]
83
-
76
+ for item in street :
77
+ if isinstance (item , str ):
78
+ if " " in item :
79
+ result = item .split ()[index ]
84
80
85
81
return result
86
82
87
83
88
84
def normalize_phone_number (number ):
89
- if str (number ) == 'nan' :
90
- return ""
91
- try :
92
- parsed_number = phonenumbers .parse (number , "US" )
93
- except phonenumbers .phonenumberutil .NumberParseException :
94
- return ""
95
- return phonenumbers .format_number (parsed_number , phonenumbers .PhoneNumberFormat .NATIONAL )
85
+ result = None
86
+
87
+ if number and str (number ) != 'nan' :
88
+ number = re .sub ('[() -.+]' , '' , number )
89
+
90
+ if number .isdigit () and (len (number ) == 10 or (number [0 ] == '1' and len (number ) == 11 )):
91
+ if number [0 ] == '1' and len (number ) == 11 :
92
+ result = number [1 :]
93
+ else :
94
+ result = number
95
+ else :
96
+ print ("Invalid phone number was not loaded: " + number )
97
+
98
+ return result
96
99
97
100
98
101
SOURCE_NORMALIZATION_MAPPING = {
@@ -101,7 +104,7 @@ def normalize_phone_number(number):
101
104
"first_name" : "first_name" ,
102
105
"last_name" : "last_name" ,
103
106
"email" : "email" ,
104
- "mobile" : lambda df : df ["mobile" ].combine_first (df ["phone" ]),
107
+ "mobile" : lambda df : df ["mobile" ].combine_first (df ["phone" ]). apply ( normalize_phone_number ) ,
105
108
"street_and_number" : "mailing_street" ,
106
109
"apartment" : "mailing_street" ,
107
110
"city" : "mailing_city" ,
@@ -123,7 +126,7 @@ def normalize_phone_number(number):
123
126
"first_name" : "firstname" ,
124
127
"last_name" : "lastname" ,
125
128
"email" : "email" ,
126
- "mobile" : lambda df : df ["phone" ],
129
+ "mobile" : lambda df : df ["phone" ]. apply ( normalize_phone_number ) ,
127
130
"street_and_number" : "street" ,
128
131
"apartment" : "apartment" ,
129
132
"city" : "city" ,
@@ -138,9 +141,9 @@ def normalize_phone_number(number):
138
141
"first_name" : "first_name" ,
139
142
"last_name" : "last_name" ,
140
143
"email" : "email" ,
141
- "mobile" : lambda df : df ["cell" ].combine_first (df ["home" ]),
142
- "street_and_number" : lambda df : df ["street_1" ]. apply ( volgistics_address , index = 1 ),
143
- "apartment" : lambda df : df ["street_1" ]. apply ( volgistics_address , index = 0 ),
144
+ "mobile" : lambda df : df ["cell" ].combine_first (df ["home" ]). apply ( normalize_phone_number ) ,
145
+ "street_and_number" : lambda df : volgistics_address ( 1 , df ["street_1" ]),
146
+ "apartment" : lambda df : volgistics_address ( 0 , df ["street_1" ]),
144
147
"city" : "city" ,
145
148
"state" : "state" ,
146
149
"zip" : "zip" ,
0 commit comments