一.string模块
1.简介:
该模块主要用于处理字符串
2.常数:
>>> string.ascii_lowercase#小写英文字母
'abcdefghijklmnopqrstuvwxyz'
>>> string.ascii_uppercase#大写英文字母
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> string.ascii_letters#英文字母
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> string.digits#10进制数字
'0123456789'
>>> string.hexdigits#16进制数字
'0123456789abcdefABCDEF'
>>> string.octdigits#8进制数字
'01234567'
>>> string.punctuation#标点符号
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
>>> string.printable#可输出字符
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'
>>> string.whitespace#空白字符
' \t\n\r\x0b\x0c'
3.方法:
转换为标题格式:[<ns>=]string.capwords("<s>"[,sep=None])
#即将每个单词的首字母转换为大写;与"<s>".title()的区别在于如果某个单词不以字母开头,就不转换
#参数说明:
s:指定要转换的str;为str
sep:指定如何分割单词;默认为所有空白字符
ns:返回修改后的str;为str
#实例:
>>> string.capwords("aaa e4sdfA")
'Aaa E4sdfa'
>>> string.capwords("aaa 4sdfA")
'Aaa 4sdfa'
>>> "aaa 4sdfA".title()
'Aaa 4Sdfa'
>>> string.capwords("aaa e4sdfA",sep="e")
'Aaa e4sdfa'
>>> string.capwords("aaa e4sdfA",sep="4")
'Aaa e4Sdfa'
3.类
(1)字符串模板:
#该类用于定制str的替换标准:
创建模板:<t>=string.Template(template=None)
进行完全替换:<t>.substitute([param1="<vali>"...param2="<valn>"])
#必须全部被替换,不能跳过某些部分
进行部分替换:<t>.safe_substitute([parami="<vali>"...paramj="<valn>"])
#可不全部替换,跳过某些部分(这时param前的$也会被保留)
#参数说明:
template:指定模板格式;为str
格式为:"...$<param1> ...$<paramn> ..."
param:指定可替换的部分;为str
#在template中,这些部分前面应加$,后面接空白或标点;或者用花括号包起来,前面外面再加$(即${param})
t:返回的模板对象;为string.Template object
val:指定替换为的值:为str
#会连param前的$一起替换掉;也可通过dict传入
#实例:
>>> t=string.Template("Hello,I am $name. And who are you? $y1,$y2 or $y3?")
>>> t.substitute(name="Sam",y1="Jack",y2="Alice",y3="Tom")
'Hello,I am Sam. And who are you? Jack,Alice or Tom?'
>>> t.safe_substitute(name="Jack")
'Hello,I am Jack. And who are you? $y1,$y2 or $y3?'
>>> t=string.Template("$asads")
>>> t.substitute(a="JJJ")#注意:param应接空白或标点,以表示该部分已结束
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\Euler\AppData\Local\Programs\Python\Python38\lib\string.py", line 126, in substitute
return self.pattern.sub(convert, self.template)
File "C:\Users\Euler\AppData\Local\Programs\Python\Python38\lib\string.py", line 119, in convert
return str(mapping[named])
KeyError: 'asads'
>>> t=string.Template("$a sads")
>>> t.substitute(a="JJJ")
'JJJ sads'
>>> t=string.Template("aaa${who}df")#或者使用花括号包起来
>>> t.substitute(who="JJJ")
'aaaJJJdf'
######################################################################################################################
还可通过继承string.Template类并修改delimiter(定界符)和idpattern(替换格式)来定制不同形式的模板
(2)字符串格式化:
参见:https://blog.csdn.net/wo94chunjie/article/details/102935493
https://www.kancloud.cn/misstime/python3_notes/656826
二.difflib模块
1.简介:
该模块主要用于比较文本并得到不同文本间的差异
三.textwrap模块
1.简介:
该模块主要用于实现文本填充
四.unicodedata模块
1.简介:
此模块提供了对Unicode Character Database(UCD)的访问.UCD中定义了所有unicode字符的字符属性
五.stringprep模块
六.realine模块
七.rlcompleter模块
八.codecs模块
1.简介:
codecs模块专门用于编码转换
九.pyperclip模块:有关剪贴板
1.copy():向计算机的剪贴板发送文本
2.paste():从计算机剪贴板接收文本
import pyperclip
pyperclip.copy("Hello world") #此时打开剪贴板,可粘贴"Hello world"到剪贴板
如果在剪贴板中复制了某一段字符,比如"nihao",此时运行pyperclip.paste()就会返回"nihao"
3.项目举例
#口令保管箱:
import sys, pyperclip
PASSWORDS = {"email": "euyr8wuey89r3geidw","blog": "wqeiy2398eghduk","computer": "ewkwo][ke;w"}
if len(sys.argv < 2):
print("Please input the account name")
sys.exit()
account = sys.argv[1]
if account in PASSWORDS:
pyperclip.copy(PASSWORDS[account])
print("The password for " + account + " copied to clipboard!")
else:
print("There is no account named " + account )
#在标记中添加无序列表:
#从剪贴板复制一段文本,在文本每一行开头加上“*”,再粘贴回剪贴板
import pyperclip
text = pyperclip.paste()
lines = text.split("\n")
for i in range(len(lines)):
lines[i] = "*" + lines[i]
text = "\n".join(lines)
pyperclip.copy(text)