用faker生成假数据使用正则表达式将电话号分类,并存为xlsx文件
时间: 2023-06-27 22:03:33 浏览: 179
好的,我可以帮你实现这个功能。首先,我们需要安装 `faker` 和 `openpyxl` 两个 Python 库。
```python
!pip install faker openpyxl
```
接着,我们可以使用 `faker` 生成一些假数据,并将它们存储到一个列表中。
```python
import random
import re
from faker import Faker
fake = Faker()
data = []
for i in range(100):
name = fake.name()
phone = fake.phone_number()
email = fake.email()
data.append((name, phone, email))
```
接下来,我们可以使用正则表达式将电话号码分类。这里我们假设电话号码有三种类型:纯数字、带有括号的区号+数字、带有加号的国际电话。
```python
regex_num = r'\d{11}' # 纯数字
regex_area = r'\(\d{3}\)\d{8}' # 区号+数字
regex_intl = r'\+\d{2}\s\d{10}' # 国际电话
phone_num = []
phone_area = []
phone_intl = []
for name, phone, email in data:
if re.match(regex_num, phone):
phone_num.append((name, phone, email))
elif re.match(regex_area, phone):
phone_area.append((name, phone, email))
elif re.match(regex_intl, phone):
phone_intl.append((name, phone, email))
else:
pass
```
最后,我们可以使用 `openpyxl` 将分类后的数据保存到 Excel 文件中。
```python
from openpyxl import Workbook
wb = Workbook()
ws1 = wb.active
ws1.title = "Phone Number"
ws1.cell(row=1, column=1, value="Name")
ws1.cell(row=1, column=2, value="Phone Number")
ws1.cell(row=1, column=3, value="Email")
for idx, (name, phone, email) in enumerate(phone_num):
row = idx + 2
ws1.cell(row=row, column=1, value=name)
ws1.cell(row=row, column=2, value=phone)
ws1.cell(row=row, column=3, value=email)
ws2 = wb.create_sheet(title="Area Code")
ws2.cell(row=1, column=1, value="Name")
ws2.cell(row=1, column=2, value="Phone Number")
ws2.cell(row=1, column=3, value="Email")
for idx, (name, phone, email) in enumerate(phone_area):
row = idx + 2
ws2.cell(row=row, column=1, value=name)
ws2.cell(row=row, column=2, value=phone)
ws2.cell(row=row, column=3, value=email)
ws3 = wb.create_sheet(title="International Code")
ws3.cell(row=1, column=1, value="Name")
ws3.cell(row=1, column=2, value="Phone Number")
ws3.cell(row=1, column=3, value="Email")
for idx, (name, phone, email) in enumerate(phone_intl):
row = idx + 2
ws3.cell(row=row, column=1, value=name)
ws3.cell(row=row, column=2, value=phone)
ws3.cell(row=row, column=3, value=email)
wb.save("phone_numbers.xlsx")
```
以上就是完整的代码。你可以根据自己的需求修改正则表达式和 Excel 文件名等参数。
阅读全文