二,Python string模块(2)

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


转载于:https://my.oschina.net/myeyes/blog/129318

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值