Python 生成隨機字符串

0x00 吐槽

最近讓項目坑的沒辦法,老寫一些腳本來協助工作,剛好在測試python生成word的時候遇到需要隨機字符串來命名文檔名,簡單寫點東西記錄一下

Python大法好

0x01 一班的童靴

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

#!/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

運行結果:


運行結果

0x02 我幼兒園三班的。。

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

魯迅

上面的代碼雖好,但是感覺太長了,雖然說一寸長,一寸強,但也有短小精悍的

#!/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

運行結果:


短小精悍

來看看為什么這么一行就能夠返回一個隨機字符串

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

首先看看這幾個功能

  • random.sample(str, num)
    從str字符串中隨機選取num個字符
  • string.ascii_letters
    返回26個英文字母的大小寫字符串
  • string.digits
    返回阿拉伯數字的字符串

這樣看就很清楚了,首先將大小寫字母和阿拉伯數字拼接成一個字符串,然后在該字符串中隨機選取n個字符,并添加進一個空字符串,就能得到一個隨機字符串

0xFF 總結

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

另外,在實際項目中,建議大家用第一種方法,因為代碼寫出來是需要讓別人去看的,在一個團隊中,你突然用了一個很騷的走位,隊友瞬間完全懵逼,還得去查資料。。。小心最后自己被祭天了

不說了,趕緊把坑爹的項目搞完,勞資吃火鍋

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容