用faker包生成200个电话,然后用正则表达式提取移动,电信,联通,并生成Excel表
时间: 2023-06-19 19:08:24 浏览: 627
好的,我可以帮你实现这个任务。请问你已经安装了Python和相关的包吗?如果没有安装,你需要先安装Python和faker包。
安装Python可以参考官方网站:https://www.python.org/downloads/
安装faker包可以使用以下命令:
```
pip install faker
```
安装完成后,你可以使用以下代码生成200个电话号码并保存到一个列表中:
```python
from faker import Faker
import random
fake = Faker('zh_CN')
phone_numbers = [fake.phone_number() for _ in range(200)]
```
接下来,我们需要使用正则表达式提取不同运营商的电话号码。中国移动的号码以139、138、137、136、135、134、159、158、157、150、151、152、147、182、183、184、178、187、188开头。中国联通的号码以130、131、132、155、156、145、176、185、186开头。中国电信的号码以133、153、177、173、189、180、181、149、199开头。
我们可以使用Python的re模块来实现正则表达式的匹配。以下是提取不同运营商电话号码的代码:
```python
import re
china_mobile_pattern = r'^1(3[4-9]|5[012789]|8[23478]|4[78]|7[8])\d{8}$'
china_unicom_pattern = r'^1(3[0-2]|5[56]|8[56]|4[5]|7[6])\d{8}$'
china_telecom_pattern = r'^1(3[3]|4[9]|5[3]|7[37]|8[019]|9[9])\d{8}$'
china_mobile_numbers = []
china_unicom_numbers = []
china_telecom_numbers = []
for phone_number in phone_numbers:
if re.match(china_mobile_pattern, phone_number):
china_mobile_numbers.append(phone_number)
elif re.match(china_unicom_pattern, phone_number):
china_unicom_numbers.append(phone_number)
elif re.match(china_telecom_pattern, phone_number):
china_telecom_numbers.append(phone_number)
```
最后,我们可以使用Python的pandas包将数据保存到Excel表中。以下是完整的代码:
```python
from faker import Faker
import random
import re
import pandas as pd
fake = Faker('zh_CN')
phone_numbers = [fake.phone_number() for _ in range(200)]
china_mobile_pattern = r'^1(3[4-9]|5[012789]|8[23478]|4[78]|7[8])\d{8}$'
china_unicom_pattern = r'^1(3[0-2]|5[56]|8[56]|4[5]|7[6])\d{8}$'
china_telecom_pattern = r'^1(3[3]|4[9]|5[3]|7[37]|8[019]|9[9])\d{8}$'
china_mobile_numbers = []
china_unicom_numbers = []
china_telecom_numbers = []
for phone_number in phone_numbers:
if re.match(china_mobile_pattern, phone_number):
china_mobile_numbers.append(phone_number)
elif re.match(china_unicom_pattern, phone_number):
china_unicom_numbers.append(phone_number)
elif re.match(china_telecom_pattern, phone_number):
china_telecom_numbers.append(phone_number)
data = {
'中国移动': china_mobile_numbers,
'中国联通': china_unicom_numbers,
'中国电信': china_telecom_numbers
}
df = pd.DataFrame(data)
df.to_excel('phone_numbers.xlsx', index=False)
```
运行代码后,你会在当前目录下看到一个名为phone_numbers.xlsx的Excel表,其中包含提取出的移动、电信和联通的电话号码。
阅读全文