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

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é)果:

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)目搞完,勞資吃火鍋