'''
maketrans()、translate()
maketrans()方法用来生成字符映射表,而translate()方法则按映射表中定义的对应关系转换并替换其中的字符,使用这两个方法的组合可以
同时处理多个不同的字符,replace()方法则无法满足这一要求。
'''
#创建映射表,将字符'abcdef123'一一地转换为'uvwxyz@#$'
table=''.maketrans('abcdef123','uvwxyz@#$')
s2 = 'Python is a greate programming language.I like it 123!'
print(s2.translate(table))
# Python is u gryuty progrumming lunguugy.I liky it @#$! #模拟凯撒加密
#每个英文字母替换为字母表中后面第3个字母,当然,也可以是其他数字
import string
lowerLetters=string.ascii_lowercase
upLetters=string.ascii_uppercase
before=lowerLetters+upLetters
print(before)
# abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
#循环移位
after=lowerLetters[3:]+lowerLetters[:3] + upLetters[3:]+upLetters[:3]
print(after)
# defghijklmnopqrstuvwxyzabcDEFGHIJKLMNOPQRSTUVWXYZABC
#创建字符转换表,将英文字母替换为该字母后面第3个字母
table1=''.maketrans(before,after)
example='If the implementation is easy to explain,it may be a good idea.'
print(example.translate(table1))
# Li wkh lpsohphqwdwlrq lv hdvb wr hasodlq,lw pdb eh d jrrg lghd. #Python标准库中的string提供了英文字母大小写、数字字符、标点符号等常量,可以直接使用,下面的代码实现随机密码生成功能
import string
x=string.digits+string.ascii_letters+string.punctuation #可能字符集
print(x)
# 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
print(string.digits)
#
print(string.ascii_letters)
# abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
print(string.punctuation)
# !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
import random
print(''.join([random.choice(x) for i in range(8)])) #随机选取8个字符 '''
在Python中,字符串属于不可变对象,不支持原地修改,如果需要修改其中的值,只能重新创建一个新的字符串对象。
然而,如果确实需要一个支持原地修改的unicode数据对象,可以使用io.StringIO对象或array模块.
'''
from io import StringIO
s3='Hello world'
sio=StringIO(s3) #创建可变字符串对象
print(sio)
# <_io.StringIO object at 0x101ba5d38>
print(sio.tell()) #返回当前位置
#
print(sio.read()) #从当前位置开始读取字符串
# Hello world
print(sio.getvalue()) #返回可变字符串的全部内容
# Hello world
print(sio.tell())
#
sio.seek(6) #重新定位当前位置
sio.write('SDIBT') #从当前位置开始写入字符串
print(sio.read())
# ''
print(sio.getvalue())
# Hello SDIBT
print(sio.tell())
#
s3='Hello world'
from array import array
sa=array('u',s3)
print(sa)
# array('u', 'Hello world')
print(sa.tostring()) #查看可变字符串对象的内容
# b'H\x00\x00\x00e\x00\x00\x00l\x00\x00\x00l\x00\x00\x00o\x00\x00\x00 \x00\x00\x00w\x00\x00\x00o\x00\x00\x00r\x00\x00\x00l\x00\x00\x00d\x00\x00\x00'
print(sa.tounicode()) #查看可变字符串对象的内容
# Hello world
sa[0] = 'F' #修改指定位置上的字符
print(sa)
# array('u', 'Fello world')
sa.insert(5,'w') #在指定位置插入字符
print(sa)
# array('u', 'Fellow world')
sa.remove('l') #删除指定字符的首次出现
print(sa)
# array('u', 'Felow world')