Python 生成隨機(jī)字符串

0x00 吐槽

最近讓項(xiàng)目坑的沒辦法,老寫一些腳本來協(xié)助工作,剛好在測(cè)試python生成word的時(shí)候遇到需要隨機(jī)字符串來命名文檔名,簡(jiǎn)單寫點(diǎn)東西記錄一下

Python大法好

0x01 一班的童靴

其實(shí)隨機(jī)字符串這個(gè)東西在任何語言里都經(jīng)常會(huì)用到,而且解決方法也簡(jiǎn)單,首先定義一個(gè)字符串,隨機(jī)字符串就從這里面取,然后根據(jù)要取的長(zhǎng)度進(jìn)行循環(huán),每次生成一個(gè)隨機(jī)數(shù),范圍就是在0到隨機(jī)字符串元素的總個(gè)數(shù)之間,然后每次根據(jù)生成的隨機(jī)數(shù)去取對(duì)應(yīng)位置上的字符串進(jìn)行拼接,最后拼接的結(jié)果就是我們要的隨機(jī)字符串

#!/usr/bin/env python2.7
# -*- coding: utf-8 -*-
# author:wkong、
# jianshu notic
# 2018 08-31
# Cool in one hundred lines of code
import random

def ranstr(num):
    # 猜猜變量名為啥叫 H
    H = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'

    salt = ''
    for i in range(num):
        salt += random.choice(H)

    return salt

salt = ranstr(6)
print salt

運(yùn)行結(jié)果:


運(yùn)行結(jié)果

0x02 我幼兒園三班的。。

人生的意義就在于折騰
??????????????????????????????——魯迅

魯迅

上面的代碼雖好,但是感覺太長(zhǎng)了,雖然說一寸長(zhǎng),一寸強(qiáng),但也有短小精悍的

#!/usr/bin/env python2.7
# -*- coding: utf-8 -*-
# author:wkong、
# jianshu notic
# 2018 08-31
# Cool in one hundred lines of code
import random
import string

def ranstr(num):
    salt = ''.join(random.sample(string.ascii_letters + string.digits, num))

    return salt

salt = ranstr(6)
print salt

運(yùn)行結(jié)果:


短小精悍

來看看為什么這么一行就能夠返回一個(gè)隨機(jī)字符串

>>>random.sample('123456789', 4)
['5', '4', '7', '9']
>>>string.ascii_letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>>string.digits
'0123456789'
>>>

首先看看這幾個(gè)功能

  • random.sample(str, num)
    從str字符串中隨機(jī)選取num個(gè)字符
  • string.ascii_letters
    返回26個(gè)英文字母的大小寫字符串
  • string.digits
    返回阿拉伯?dāng)?shù)字的字符串

這樣看就很清楚了,首先將大小寫字母和阿拉伯?dāng)?shù)字拼接成一個(gè)字符串,然后在該字符串中隨機(jī)選取n個(gè)字符,并添加進(jìn)一個(gè)空字符串,就能得到一個(gè)隨機(jī)字符串

0xFF 總結(jié)

雖然東西不多,但重要的是要有一個(gè)折騰的心

另外,在實(shí)際項(xiàng)目中,建議大家用第一種方法,因?yàn)榇a寫出來是需要讓別人去看的,在一個(gè)團(tuán)隊(duì)中,你突然用了一個(gè)很騷的走位,隊(duì)友瞬間完全懵逼,還得去查資料。。。小心最后自己被祭天了

不說了,趕緊把坑爹的項(xiàng)目搞完,勞資吃火鍋

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容