1. 简化字符串的translate方法的使用:
import string
def translator(frm='', to='', delete='', keep=None):
if len(to) == 1:
to = to * len(frm)
trans = string.maketrans(frm,to)
if keep is not None:
allchars = string.maketrans('', '')
delete = allchars.translate(allchars, keep.translate(allchars, delete))
def translate(s):
return s.translate(trans, delete)
return translate
使用:
digits_only = translator(keep=string.digits)
digits_only('tang : 224-112') # '224112'
no_digits = translator(delete=string.digits)
no_digits('tang : 224-112') # 'tang : -'
digits_to_hash = translator(frm=string.digits, to='#')
digits_to_hash('tang : 224-112') # 'tang : ###-###'
解释:
string.maketrans('', '') 实际上空映射,按照原始字符保留
keep.translate(allchars, delete) 先把keep字符串中delete的字符删掉,保留下来的字符用allchars匹配
s=
'abcdefg-1234567'
table= string.maketrans('abc','ABC')
s.translate(table,'ab123') #输出Cdefg-4567 先把s中的ab123去除了,然后在保留下来的字符中应用table中指定的字符映射关系映射:c -> C
字符串大小写:
'tangjiajia'.upper() 全部转成大写
'TANGJIAJIA'.lower() 全部小写
'tang Jia JIA'.capitalize() 字符串首字母大写 --> 'Tang jia jia'
'tang Jia JIA'.title() 每一个单词首字母大写 --> 'Tang Jia Jia'
访问字符串的一部分
1.切片 :
afield = theline[3:8] 包头不包尾
2. struct 模块:
struct模块中最重要的三个函数是pack(), unpack(), calcsize()
pack(fmt, v1, v2, ...) 按照给定的格式(fmt),把数据封装成字符串(实际上是类似于c结构体的字节流)
unpack(fmt, string) 按照给定的格式(fmt)解析字节流string,返回解析出来的tuple
calcsize(fmt) 计算给定的格式(fmt)占用多少字节的内存
tangjiajia