(其实不止是python3 可以, python2.7 也可以)
本文介绍Python3中String模块ascii_letters和digits方法,其中ascii_letters是生成所有字母,从a-z和A-Z,digits是生成所有数字0-9.
示例如下:
>>> chars = string.ascii_letters + string.digits
>>> print(chars)
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
生成所有字母和数字干什么?在哪个场景中会用到呢,举个例子:比如生成激活码(优惠券),激活码一般都是字母和数字组成的,首先要有一个所有字母和数字的字符串,然后随机取出几个字母或数字。
import random, string
def rand_str(num, length=7):
f = open('Activation_code.txt', 'w')
for i in range(num):
chars = string.ascii_letters + string.digits
s = [random.choice(chars) for i in range(length)]
f.write('{0}\n'.format(''.join(s)))
f.close()
if __name__ == '__main__':
rand_str(200)
String模块中的常量:
string.digits:数字0~9
string.ascii_letters:所有字母(大小写)
string.lowercase:所有小写字母
string.printable:可打印字符的字符串
string.punctuation:所有标点
string.uppercase:所有大写字母
>>> import string
>>> string.digits
'0123456789'
>>> string.letters
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
>>> string.lowercase
'abcdefghijklmnopqrstuvwxyz'
>>> string.printable
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'
>>> string.punctuation
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
>>> string.uppercase
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
1、find函数
在一个较长的字符串中查询子字符串,返回子串所在位置最左端索引,没有找到返回-1
>>> title = "Monty Python's Flying Circus"
>>> title.find('Monty')
0
>>> title.find('monty')
-1
可以选择起始点和结束点
>>> title.find('Python')
6
>>> title.find('Python', 3)
6
>>> title.find('Python', 3, 10)
-1
2、join函数
在队列中添加元素(只能操作于字符串,返回一个修改后的字符串,但是原字符串不改变)
>>> seq = ['1', '2', '3', '4', '5']
>>> sep = '+'
>>> sep.join(seq)
'1+2+3+4+5'
>>> seq
['1', '2', '3', '4', '5']
>>> dirs = '', 'usr', 'bin', 'env'
>>> '/'.join(dirs)
'/usr/bin/env'
>>> print 'C:' + '\\'.join(dirs)
C:\usr\bin\env
逆方法:split函数
将字符串分割成序列,返回该序列,原字符串不改变
>>> word = '1+2+3+4+5'
>>> word.split('+')
['1', '2', '3', '4', '5']
>>> word
'1+2+3+4+5'
3、lower函数
返回字符串的小写字母版
>>> 'fafDAWdfaweDWED'.lower()
'fafdawdfawedwed'
扩展:
title函数:首字母大写,其他小写
>>> "that's all folks".title()
"That'S All Folks"
capwords函数:功能同上,为string模块中函数
>>> import string
>>> string.capwords("that's all folks")
"That's All Folks"
4、replace函数
返回某字符串所有匹配项均被替换之后得到的字符串,原字符串不改变
>>> word = 'this is a test'
>>> word.replace('is', 'eez')
'theez eez a test'
>>> word
'this is a test'
maketrans函数:功能同上,string中的转换表,共有256个项目,函数接受2个等长的字符串,第一个字符串中的每个字符都用第二个字符串中相应位置的字符来进行替换
maketrans类似于一种规则,经常与translate结合,以完成一些普通函数无法完成的字符串替换
>>> from string import maketrans
>>> table = maketrans('cs', 'kz')
>>> len(table)
256
>>> table[97:123]
'abkdefghijklmnopqrztuvwxyz'
>>> maketrans('','')[97:123]
'abcdefghijklmnopqrstuvwxyz'
translate函数:功能同上,但是只能处理单个字符,有2个参数,第一个是替换,第二个是删除
例:table承继maketrans中的table
>>> 'this is an incredible test'.translate(table)
'thiz iz an inkredible tezt'
>>> 'this is an incredible test'.translate(table, ' ')
'thizizaninkredibletezt'
5、strip函数
去除两侧(不包括内部)空格的字符串,原序列不变
>>> word = ' this is test '
>>> word.strip()
'this is test'
>>> word
' this is test '
可在strip()加入参数,以去除想要去掉的指定字符
>>> '*** SPAM * for * everyone!!! ***'.strip('*')
' SPAM * for * everyone!!! '
>>> '*** SPAM * for * everyone!!! ***'.strip('* ')
'SPAM * for * everyone!!!'
>>> '*** SPAM * for * everyone!!! ***'.strip('* !')
'SPAM * for * everyone'