python cookbook 读书笔记3(字符串处理3)

来源:互联网 发布:浙江蜗牛网络 编辑:程序博客网 时间:2024/06/05 03:41

1.11检查字符串是文本还是二进制,这个还可以用做别的,但是思路都一样。

>>> from __future__ import division#确保不会截断
>>> import string
>>> text_characters=''.join(map(chr,range(32,127)))+'\n\r\t\b'
>>> _null_trans=string.maketrans('','')
>>> def istext(s,text_characters=text_characters,threshold=0.30):
...     if '\0' in s:#如果包含空值,不是文本
...             return False
...     if not s:#如果是空字符串是文本
...             return True
...     t=s.translate(_null_trans,text_characters)#获得由非文本构成的子串,如果长度大于30%就不是文本
...     return len(t)/len(s)<=threshold

1.12控制大小写,字符串的大小写可以用切片控制大小写,也可以用一些内置函数

>>> a='you are a pig'
>>> a.capitalize()
'You are a pig'
>>> a.title()
'You Are A Pig'

>>> a[:1].upper()+a[1:].lower()
'You are a pig'

作者给出了一个判断开头是否大写的方法,因为不含字母或者空字符串都是字符串,但是开头无大写,所以要判断字符串是否含字母。个人认为此处不对,因为含字母不一定是以字母开头,所以此判断不对。正确的应先检测开头是不是字母,再判断是不是开头大写。

>>> import string
>>> notrans=string.maketrans('','')
>>> def containsAny(str,strset):
...     return len(strset)!=len(strset.translate(notrans,str))
...
>>> def iscapitalized(s):
...     return s==s.capitalize() and containsAny(s,string.letters)
...

1.14改变多行文本字符串的缩进,下面这个函数可以让每行保持相同的缩进,更多对格式处理的函数请参考这节。

>>> def reindent(s,numSpaces):
...     leading_space=numSpaces * ' '
...     lines=[leading_space+ine.strip() for line in s.splitlines()]
...     return '\n'.join(lines)

1.15扩展和压缩制表符,使用expandtabs()可以将制表符扩展为一些空格

1.16替换字符串中的子串

至此,发现看书都是python2的,因为替换子串可以用replace方法,所以接下来决定从新开始看python3.

0 0
原创粉丝点击