需求:对csv文件进行清洗,并查找每一个电话号码归属地,找出指定归属地的条目存储到另外的csv文件
思路:
- 对原csv文件进行清洗,并保存为一个新的csv文件
- 打开新的csv文件,对条目进行电话号码归属地查询
- 找出指定归属地条目,构建条目后保存进新的csv文件
具体代码:
import csv
import re
from phone import Phone
def get_find_mobile(text):
mobiles = re.findall(r"1\d{10}", text)
if len(mobiles) > 0:
return mobiles[0]
else:
return '0'
csv_file = csv.reader(open('1.csv', 'r', encoding='utf-8'))
new_csv_file = open('2.csv', 'w', newline='', encoding='utf-8')
writer = csv.writer(new_csv_file)
next(csv_file, None)
for user in csv_file:
print(user)
if user[0] == "":
continue
writer.writerow(user)
new_csv_file.close()
csv_file = csv.reader(open('2.csv', 'r', encoding='utf-8'))
final_file = open('3.csv', 'w', newline='', encoding='utf-8')
writer1 = csv.writer(final_file)
index = 0
for item in csv_file:
index = index + 1
phoneNum = item[1]
phone = get_find_mobile(phoneNum)
if phone == '0':
print('电话出错:'+phoneNum)
print('正在重试')
phoneNum = item[0]
phone = get_find_mobile(phoneNum)
if phone == '0':
print('电话仍然出错:'+phoneNum)
continue
info = Phone().find(phone)
i = index*100/32888
pro = round(i, 2)
print('正在处理第:' + str(index) + '条数据,共32888条,进度:' + str(pro))
print(info)
try:
phone = info['phone']
province = info['province']
city = info['city']
zip_code = info['zip_code']
area_code = info['area_code']
phone_type = info['phone_type']
print('province:'+province)
if province == '北京':
item.append(province)
writer1.writerow(item)
#break
except:
print('none')
final_file.close()
网友评论