Faker生成的Mock数据写入Excel&CSV

Faker生成的Mock数据写入Excel&CSV

依赖Faker包

pip install faker

方式一:写入Excel文件

import xlwt
from faker import Faker
from xpinyin import Pinyin

def create_excel():

        # 初始化生成数据的文化选项中文,默认en_US
        faker = Faker("zh_CN")
        # 引用第三方包,将汉字转为拼音且大写,并设置为人员的UMID编号
        py = Pinyin()
        # 标题信息
        title = ['Name','UMID','Phone','SSN','Address','Email']

        workbook = xlwt.Workbook()
        worksheet = workbook.add_sheet('mockdata',cell_overwrite_ok=True) #添加sheet,参数重复写入

        for i in range(50):
            username = str(faker.name())
            umid = py.get_pinyin(username, '', tone_marks=None, convert='upper')
            mock = [username,umid,faker.phone_number(),faker.ssn(),faker.address(),faker.email()]
            print(mock)
            for j in range(len(title)):
                # 写入标题
                worksheet.write(0, j, title[j])
                # 逐行写入正文内容
                worksheet.write(i,j,mock[j])
        workbook.save('./mock.xls')


if __name__ == "__main__":
    create_excel()

【结果】

在这里插入图片描述
在这里插入图片描述


方式二:写入CSV文件

import csv
from faker import Faker
from xpinyin import Pinyin


def create_csv():
    # 初始化生成数据的文化选项中文,默认en_US
    faker = Faker("zh_CN")
    # 引用第三方包,将汉字转为拼音且大写,并设置为人员的UMID编号
    py = Pinyin()
    # 标题信息
    title = ['Name', 'UMID', 'Phone', 'SSN', 'Address', 'Email']

    #修改成encoding = 'utf-8-sig,就会解决乱码的问题
    with open("./mock.csv","w",encoding='utf-8-sig') as f:
        f_csv = csv.writer(f)
        f_csv.writerow(title)

        for i in range(10):
            username = faker.name()
            umid = py.get_pinyin(username, '', tone_marks=None, convert='upper')
            # 加'\t'避免写入过长的数据变成科学计数
            mock = [username, umid, faker.phone_number(), faker.ssn()+'\t', faker.address(), faker.email()]
            f_csv.writerow(mock)

if __name__ == "__main__":
    create_csv()



  • 问题1:写入数字内容过长时,显示科学计数格式
  • 解决: 加'\t'避免写入过长的数据变成科学计数

  • 问题2:写入中文内容乱码问题
  • 解决:修改成encoding = 'utf-8-sig',就会解决乱码的问题

【结果】在这里插入图片描述

好的,我可以帮你实现这个功能。首先,我们需要安装 `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 文件名等参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值