python數據類型,python faker庫隨機假數據介紹

 2023-10-06 阅读 31 评论 0

摘要:前言 在數據相關的測試中,我們經常會需要去構造數據,隨機生成數據。大部分人的寫法會是用random 隨機生成: 比如我們要生成隨機的姓名,我們要構造下面的一段代碼: def random_first_name():name = ['趙', '錢', '

前言

在數據相關的測試中,我們經常會需要去構造數據,隨機生成數據。大部分人的寫法會是用random 隨機生成:
比如我們要生成隨機的姓名,我們要構造下面的一段代碼:

def random_first_name():name = ['趙', '錢', '孫', '李', '周', '吳', '鄭', '王', '馮', '陳', '褚', '衛', '蔣', '沈', '韓', '楊', '朱', '秦', '尤', '許', '何', '呂', '施']return random.choice(name)def random_last_name():head = random.randint(0xb0, 0xf7)body = random.randint(0xa1, 0xf9)   val = f'{head:x}{body:x}'str_ = bytes.fromhex(val).decode('gb2312')return str_name = random_first_name() + random_last_name()

看的出來,上面的構造的非常有限,如果需要更多的姓名,則需要加更多的姓名。

faker造數

python 中有個庫可以造各種的數,姓名只需要一句語句就可以生成,非常的方便,這個庫就是faker,源碼請點擊 ,官方手冊

安裝:pip install Faker

python數據類型,創建 Faker
安裝完成后,使用時需要先創建一個 Faker 對象,創建方法有兩種,一種是直接通過構造函數來創建,另一種是通過工廠函數來創建。

>>> from faker import Faker, Factory
>>> fake1 = Factory.create() # 通過工廠函數來創建
>>> fake1.name() # 隨機生成一個姓名
'Brad Johnson'
>>> fake2 = Faker() # 通過構造函數來創建
>>> fake2.name() # 隨機生成一個姓名
'Gregory Ritter'

本地化設置

如果faker()后面不加參數,默認都是英文的,如果要其他語言,可以加入相對應的參數,如下中文姓名


>>> fake = Faker("zh_CN")
>>> fake.name()
'楊玲'

隨機生成的基本是兩個跟三個字數的姓名。

faker支持以下類型的數據:
地址位置相關:城市,國家 ,街道, 經緯度,郵政編碼
車牌號:
銀行:
條碼:
顏色相關:
公司:公司名、公司email、公司名前綴等
銀行卡:卡號、有效期、類型等
貨幣:
時間日期:日期、年、月等
工作:
文件:文件名、文件類型、文件擴展名等
互聯網:
手機號碼類:手機號、運營商號段
person 姓名:性別、姓名等
身份證號碼:
profile 人物屬性:姓名、性別、地址、公司等
lorem 亂數假文:造數
其他類:uuid  md5等
數據類型:字典,集合,列表
user_agent 用戶代理:
地址位置相關:
>>> fake.city() # 城市名稱
'沈陽縣'
>>> fake.street_name() # 街道名稱
'梅路'
>>> fake.country_code() # 國家編號
'GB'
>>> fake.longitude() # 經度
Decimal('56.184936')
>>> fake.address() # 地址
'云南省飛縣東城石家莊路y座 289836'
>>> fake.province() # 省份
'黑龍江省'
>>> fake.latitude() # 緯度
Decimal('52.3888365'))
>>> fake.street_address() # 街道地址
'蕭街M座'
>>> fake.city_suffix() # 市/縣
'市'
>>> fake.postcode() # 郵政編碼
'870817'
>>> fake.country() # 國家
'瓜德羅普島'
>>> fake.street_suffix() # 街道后綴
'街'
>>> fake.district() # 區
'永川'
>>> fake.city_name() # 城市名稱
'淮安'
>>> fake.building_number() # 建筑編號
'U座'
車牌號
>>> fake.license_plate() # 車牌號
'IQY 262'
銀行
>>> fake.bank_country()
'GB'
>>> fake.iban()
'GB39SNOA2073712937476'
>>> fake.bban()
'BEJL4314200532225'
條碼

該庫非常實用,生成幾位數字,可以自己拼湊。

>>> fake.ean8()  # 8位條碼
'63080728'
>>> fake.ean13()  # 13位條碼
'0334204949323'
>>> fake.ean(length=8)  # 自定義位數條碼,只能選8或者13
'81149919'

顏色

>>> fake.color_name() # 顏色名稱
'PeachPuff'
>>> fake.safe_hex_color() # safe 顏色 16 進制編號
'#446600'
>>> fake.safe_color_name() # safe顏色名稱
'olive'
>>> fake.rgb_color() # 顏色的 rgb 值
'136,232,80'
>>> fake.hex_color() # 顏色 16 進制編號
'#6e2538'
>>> fake.rgb_css_color()
'rgb(223,253,221)'
公司
>>> fake.catch_phrase()
'Customizable transitional policy'
>>> fake.company_prefix() # 公司名前綴
'昂歌信息'
>>> fake.company() # 公司名
'菊風公司傳媒有限公司'
>>> fake.company_suffix() # 公司名后綴
'傳媒有限公司'
>>> fake.bs()
'e-enable cross-platform technologies'
信用卡
>>> fake.credit_card_full(card_type=None) # 完整卡信息
'VISA 16 digit\n凱 袁\n4661497273827659 09/24\nCVC: 118\n'
>>> fake.credit_card_provider(card_type=None) # 卡的提供者
'JCB 16 digit'
>>> fake.credit_card_expire(start="now", end="+10y", date_format="%m/%y") # 卡的有效期
'08/26'
>>> fake.credit_card_number(card_type=None) # 卡號
'4271683569922518'
>>> fake.credit_card_security_code(card_type=None) # 卡的安全密碼
'559'
貨幣
>>> fake.cryptocurrency()
('NEO', 'NEO')
>>> fake.cryptocurrency_code()
'ADA'
>>> fake.currency_code()
'BMD'
>>> fake.currency_name()
'Lebanese pound'
>>> fake.currency()
('BOB', 'Bolivian boliviano')
>>> fake.cryptocurrency_name()
'Dash'

時間日期

>>> fake.date_time(tzinfo=None) # 隨機日期時間
datetime.datetime(1995, 12, 16, 13, 48, 16)
>>> fake.iso8601(tzinfo=None) # 以iso8601標準輸出的日期
'1974-04-06T05:46:08'
>>> fake.date_time_this_month(before_now=True, after_now=False, tzinfo=None) # 本月的某個日期
datetime.datetime(2019, 9, 13, 18, 4, 54)
>>> fake.date_time_this_year(before_now=True, after_now=False, tzinfo=None) # 本年的某個日期
datetime.datetime(2019, 6, 15, 20, 11, 55)
>>> fake.date_time_this_decade(before_now=True, after_now=False, tzinfo=None)  # 本年代內的一個日期
datetime.datetime(2015, 11, 13, 19, 39, 17)
>>> fake.date_time_this_century(before_now=True, after_now=False, tzinfo=None)  # 本世紀一個日期
datetime.datetime(2008, 8, 22, 11, 36, 17)
>>> fake.date_time_between(start_date="-30y", end_date="now", tzinfo=None)  # 兩個時間間的一個隨機時間
datetime.datetime(2003, 8, 22, 9, 3, 10)
>>> fake.timezone() # 時區
'Europe/Skopje'
>>> fake.time(pattern="%H:%M:%S") # 時間(可自定義格式)
'17:44:34'
>>> fake.am_pm() # 隨機上午下午
'PM'
>>> fake.month() # 隨機月份
'02'
>>> fake.month_name() # 隨機月份名字
'August'
>>> fake.year() # 隨機年
'1979'
>>> fake.day_of_week() # 隨機星期幾
'Sunday'
>>> fake.day_of_month() # 隨機月中某一天
'02'
>>> fake.time_delta() # 隨機時間延遲
datetime.timedelta(13371, 27637)
>>> fake.date_object()  # 隨機日期對象
datetime.date(2018, 11, 1)
>>> fake.time_object() # 隨機時間對象
datetime.time(9, 27, 15)
>>> fake.unix_time() # 隨機unix時間(時間戳)
1264315617
>>> fake.date(pattern="%Y-%m-%d") # 隨機日期(可自定義格式)
'1988-05-20'
>>> fake.date_time_ad(tzinfo=None)  # 公元后隨機日期
datetime.datetime(504, 3, 18, 19, 23, 7)
工作
>>> fake.job()
'公司業務部門經理/主管'
文件
>>> fake.unix_partition(prefix=None) # unix 分區
'/dev/xvdl8'
>>> fake.file_name(category=None, extension=None) # 文件名
'規定.avi'
>>> fake.unix_device(prefix=None) # unix 設備
'/dev/xvdz'
>>> fake.file_path(depth=1, category=None, extension=None)
'/特別/下載.js'
>>> fake.file_extension(category=None) # 文件擴展信息
'html'
>>> fake.mime_type(category=None)
'video/mp4'
互聯網
>>> fake.ipv4(network=False)  # ipv4地址
'192.24.149.137'
>>> fake.ipv6(network=False)  # ipv6地址
'5ad1:b6dc:6435:3857:8235:ddcb:6a28:a969'
>>> fake.uri_path(deep=None) # uri路徑
'categories'
>>> fake.uri_extension() # uri擴展名
'.htm'
>>> fake.uri() # uri
'https://jingxia.cn/tags/author.html'
>>> fake.url() # url
'https://jinwei.net/'
>>> fake.image_url(width=None, height=None)  # 圖片url
'https://www.lorempixel.com/692/559'
>>> fake.domain_word() # 域名主體
'tiantao'
>>> fake.domain_name() # 域名
'yangzhong.cn'
>>> fake.tld() # 域名后綴
'com'
>>> fake.user_name() # 用戶名
'jing32'
>>> fake.mac_address() # MAC地址
'bc:72:65:36:3d:19'
>>> fake.safe_email() # 安全郵箱
>>> fake.free_email() # 免費郵箱
>>> fake.company_email()  # 公司郵箱
>>> fake.email() # 郵箱
電話號碼
>>> fake.phonenumber_prefix() # 運營商號段,手機號前三位
159
>>> fake.msisdn()
'6165267401497'
>>> fake.phone_number() # 手機號
'15133115583'
身份證號碼
>>> fake.ssn(min_age=18, max_age=90)
'222426196809082350'
人物

>>> fake.last_name() # 姓
'王'
>>> fake.first_name_male() # 男性名
'宇'
>>> fake.name() # 姓名
'秦亮'
>>> fake.first_name() # 名
'明'
>>> fake.last_name_male() # 男性姓
'袁'
>>> fake.name_male() # 女性姓名
>>> fake.romanized_name()
'Jun Tang'
>>> fake.first_name_female()
'莉'
>>> fake.last_name_female()
'羿'
>>> fake.name_female()
'張暢'
>>> fake.first_romanized_name()
'Li'
>>> fake.last_romanized_name()
'Tan'
profile 人物屬性
>>> fake.profile(fields=None, sex=None)
{'job': '運輸經理/主管', 'company': '四通傳媒有限公司', 'ssn': '450603194211258524', 'residence': '內蒙古自治區紅霞縣金 平白路F座 762180', 'current_location': (Decimal('-41.335204'), Decimal('-175.561536')), 'blood_group': 'O+', 'website': ['https://shen.cn/', 'http://bw.com/', 'https://chao.cn/'], 'username': 'qianggong', 'name': '張敏', 'sex': 'F', 'address': '廣東省烏魯木齊縣秀英蔡街W座 203230', 'mail': 'jiewei@gmail.com', 'birthdate': datetime.date(1953, 3, 3)}>>> fake.simple_profile(sex=None)
{'username': 'li28', 'name': '韓淑珍', 'sex': 'M', 'address': '上海市淑珍縣西夏諶街B座 234702', 'mail': 'ganggao@yahoo.com', 'birthdate': datetime.date(1915, 12, 10)}
lorem 亂數假文
>>> fake.paragraphs(nb=3, ext_word_list=None)
['對于社區提高.那么地方方法使用如此.完全他的程序建設還有生產.', '知道其他銷售.運行一些主要狀態功能網絡.那么電話系統沒有 同時今天擁有.', '進行包括覺得.報告單位內容認為圖片教育一定所以.公司其中繼續一樣.']>>> fake.word(ext_word_list=None)  # 隨機單詞
'搜索'
>>> fake.text(max_nb_chars=200, ext_word_list=None)  # 隨機生成一篇文章
>>> fake.sentences(nb=3, ext_word_list=None)
['登錄準備準備計劃成功電子大學.', '來自而且之間之后.', '得到朋友工具.']
>>> fake.paragraph(nb_sentences=3, variable_nb_sentences=True, ext_word_list=None)
'音樂搜索解決本站也是項目數據.應該介紹不能所有位置系列.汽車來自美國一起.'
>>> fake.words(nb=3, ext_word_list=None)  # 隨機生成三個字段
['威望', '參加', '其他']
>>> fake.sentence(nb_words=6, variable_nb_words=True, ext_word_list=None) # 隨機生成一個句子
'主題游戲任何而且政府企業一次.'

user_agent 用戶代理

>>> fake.mac_platform_token()
'Macintosh; U; PPC Mac OS X 10_12_2'
>>> fake.firefox()
'Mozilla/5.0 (Windows 98; wa-BE; rv:1.9.0.20) Gecko/2018-01-04 15:49:38 Firefox/3.6.4'
>>> fake.windows_platform_token()
'Windows NT 4.0'
>>> fake.safari()
'Mozilla/5.0 (iPod; U; CPU iPhone OS 3_0 like Mac OS X; he-IL) AppleWebKit/535.26.5 (KHTML, like Gecko) Version/3.0.5 Mobile/8B118 Safari/6535.26.5'
>>> fake.chrome(version_from=13, version_to=63, build_from=800, build_to=899)
'Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_6 like Mac OS X) AppleWebKit/535.2 (KHTML, like Gecko) CriOS/38.0.850.0 Mobile/99R322 Safari/535.2'
>>> fake.opera()
'Opera/9.68.(Windows NT 5.01; dz-BT) Presto/2.9.190 Version/11.00'
>>> fake.mac_processor()
'U; PPC'
>>> fake.linux_platform_token()
'X11; Linux i686'
>>> fake.linux_processor()
'i686'
>>> fake.internet_explorer()
'Mozilla/5.0 (compatible; MSIE 9.0; Windows 95; Trident/3.0)'
>>> fake.user_agent()
'Mozilla/5.0 (iPad; CPU iPad OS 10_3_3 like Mac OS X) AppleWebKit/534.1 (KHTML, like Gecko) CriOS/44.0.840.0 Mobile/78N065 Safari/534.1'
其他
>>> fake.binary(length=10)  # 隨機二進制字符串(可指定長度)
b'\xf6O\xc9k\xb2\xde\xb6\xcb\x99\xd3'
>>> fake.language_code()   # 隨機語言代碼
'is'>>> fake.md5(raw_output=False)  # 隨機md5,16進制字符串
'009ed11f49fe5848261a99aa4c9af448'>>> fake.sha1(raw_output=False) # 隨機sha1,16進制字符串
'8ac0e9980f880860b6e45ae6fd257cc847b7ae8d'>>> fake.sha256(raw_output=False)   # 隨機sha256,16進制字符串
'033151f173f4a389e38e7df2363d89741f752c474e7bdfa2ee0a794bf0b505b5'>>> fake.boolean(chance_of_getting_true=50) # 隨機真假值(得到True的幾率是50%)
False>>> fake.null_boolean() # 隨機真假值和null
>>> fake.null_boolean()
True>>> fake.password(length=10, special_chars=True, digits=True, upper_case=True, lower_case=True) # 隨機密碼(可指定密碼策略)
')^A5RzU(+L'
>>> fake.locale() # 隨機本地代碼
'ff_SN'
>>> fake.uuid4() # 隨機uuid
'61bad688-4578-4054-8b2d-99127355a7cb'
數據類型:
>>> fake.pyint()  # 隨機int
5638
>>> fake.pyfloat(left_digits=None, right_digits=None, positive=False)  # 浮點數
-46672778.68
>>> fake.pydecimal(left_digits=None, right_digits=None, positive=False)  # 隨機高精度數
Decimal('-918941537764.35')
>>> fake.pystr(min_chars=None, max_chars=20)  # 隨機字符串(可指定長度)
'DuEkmAaHCSsGqIoKxIaf'>>> fake.pybool()  # 隨機bool值
True>>> fake.pyiterable(nb_elements=10, variable_nb_elements=True)  # 隨機iterable
{'http://www.ge.cn/faq.htm', datetime.datetime(2002, 7, 20, 5, 45, 41), datetime.datetime(2002, 3, 3, 17, 29), 'http://chengdai.cn/', 2766, Decimal('-541462.193'), datetime.datetime(2006, 4, 27, 9, 30, 31), Decimal('9514453257546.6'), 48757519893510.9, 'SlqBsyBIWbfOYjdScdZi', datetime.datetime(1995, 5, 11, 0, 45, 37), datetime.datetime(2014, 9, 13, 20, 40, 49), 'http://www.jieming.cn/app/main/'}>>> fake.pylist(nb_elements=10, variable_nb_elements=True )  # 隨機生成一個list
[-797200585.91691, 'ChMuVThcJFexTyybIZdP', 'http://www.dongsong.cn/post/', 'jXarFZXQdVDidBxWnyuW', 6540, 61715.5038]>>> fake.pydict(nb_elements=10, variable_nb_elements=True)   # 隨機字典
{'項目': datetime.datetime(1988, 4, 8, 10, 14, 37), '經營': 'https://37.cn/tag/about.php', '音樂': 'iJehjluNhLxpjQyETpGe', '不過': 360361.44765506, '看到': 'HKdyTUwOTtuuTZSeBLUd', '這種': 608}>>>fake.pyset(nb_elements=10, variable_nb_elements=True)  # 隨機set
{Decimal('75230162994756.0'), 'https://vb.cn/posts/wp-content/explore/post.jsp', 'fkNibFsCKmspBhqIDOzj', Decimal('-50.945'), 7502857762691.5, 4821, datetime.datetime(2015, 1, 18, 12, 24, 7), 'ytan@gmail.com', Decimal('-948450382601775.0'), 'VxoBaMyruWWNxBYogiih'}>>> fake.pytuple(nb_elements=10, variable_nb_elements=True)   # 隨機tuple
(1.0, Decimal('712394408090.0'), 'shenjie@juan.net', 'wwDOBbrKgKBnfVVkFtat', 'http://www.fangchen.cn/', 'http://yongsun.cn/wp-content/author.htm', 'http://fang.cn/register/', 'asong@hotmail.com', -437705.8549)>>> fake.pystruct()  # 隨機生成3個有10個元素的python數據結構
(['xtang@gmail.com', 'pPKapYkoglckHXvvFzOy', 'https://tao.cn/register/', 52132442.0, 'nqcmGaTyutwlrNmQFelB', 'fCTLmYtCzGNCBzXfkuPR', 'fQIFuGeZLsSAjVGNIMOy', -59823.150719, Decimal('39.5924463005'), 'gLfQaEWisjBTASVwsvGS'], {'組織': Decimal('-3119855660523.2'), '的人': 'vrlSpplVjLSjQFFIILxC', '查看': datetime.datetime(1980, 8, 3, 2, 55, 6), '網站': 50625548540.294, '國際': 5509, '研究': 'lYNqIAYUinpMMWtZvvxv', '報告': Decimal('936667412.0'), '能力': 2908, '如何': 3776, '記者': 'TGTAPTpmrLaNjDLvtQtC'}, {'新聞': {0: 752728.504146, 1: ['wZLXsphxBUeHUsQfDJlm', 4038, 5954], 2: {0: 'xIuByEBprqdUYKCEqWMs', 1: 'uwlFSlwUAofzeuQIEFfV', 2: [Decimal('-235588585.403754'), Decimal('-5952248299825.2')]}}, '更多': {1: 2220, 2: [datetime.datetime(1982, 2, 2, 15, 23, 7), 'http://www.lei.cn/tag/register/', 'lei58@gmail.com'], 3: {1: 'http://www.liangwen.cn/', 2: 'https://www.yongshen.cn/list/category/explore/login/', 3: ['gTlVuJTWsgaTFCfHmALV', 'nhqTvUFbJdFRJLYFVHml']}}, '關于': {2: 8769.9071665378, 3: [3627, 'PuzjnaSufiuooeFPxnOR', 25986638362847.0], 4: {2: 'PynmCRmVubIwQQVOqvNK', 3: datetime.datetime(1973, 10, 23, 1, 48, 4), 4: ['jLgmMBVRMhlbOcMTnXrT', 3671]}}, '她的': {3: 4414, 4: ['eOgObVDQjUtGxkztDzwI', 7293, Decimal('393.7')], 5: {3: -0.655502, 4: datetime.datetime(2018, 2, 3, 18, 39, 55), 5: ['dujie@qiangguiying.cn', 1493]}}, '這是': {4: 'xPTUJlShneJmloyUnrgn', 5: [Decimal('804874.734'), 3924, 'https://www.fangfu.cn/explore/explore/homepage.htm'], 6: {4: 'http://www.01.cn/tag/categories/tags/post/', 5: 'nmo@hotmail.com', 6: [datetime.datetime(2016, 11, 10, 2, 55, 18), datetime.datetime(2010, 2, 24, 19, 23, 52)]}}, '行業': {5: 6033, 6: [9524, 9491, 'xEOzJpdhDNDyusemVcqp'], 7: {5: 'FwIQeNCPOXeLWTUARGFy', 6: Decimal('-957.51384911'), 7: [7046, -4881117.668853]}}, '自己': {6: 'yongfan@yinbai.cn', 7: [datetime.datetime(1998, 10, 19, 7, 26, 18), 2314, 'https://www.juan.net/blog/categories/post/'], 8: {6: 'EzuKYpuuFnvNXJrCCrKX', 7: 2640449.87414, 8: ['http://shi.cn/homepage.htm', datetime.datetime(2007, 8, 19, 13, 28, 35)]}}, '那么': {7: -4384571.418821, 8: ['http://jun.cn/post/', datetime.datetime(1970, 6, 30, 23, 47, 42), 'https://guiyingjia.cn/list/list/search/'], 9: {7: 'yang99@aj.cn', 8: 5305, 9: [datetime.datetime(1994, 7, 24, 5, 1, 15), Decimal('6655.855368')]}}, '制作': {8: 'tao90@wen.cn', 9: ['tlSasBwWZGorKCSLniZQ', 'QABzPBVFoXQJCLfkgKXQ', 'VXIrZMRwbhPXODZZHBjK'], 10: {8: 'LUgJGdTLXddLJThLkRIp', 9: 'fLlzbAkcEUgJekIIjWRE', 10: [2732, datetime.datetime(2004, 3, 27, 14, 23, 58)]}}, '教育': {9: 8291, 10: [8563, 'junchang@hotmail.com', 377], 11: {9: Decimal('8380226.9282'), 10: Decimal('459180.2296787'), 11: [-490270.2, 8530]}}})參考連接:
https://www.jianshu.com/p/20e41fc65dc8

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/128582.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息