Chinaunix首页 | 论坛 | 博客
  • 博客访问: 205387
  • 博文数量: 48
  • 博客积分: 1935
  • 博客等级: 上尉
  • 技术积分: 491
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-29 00:59
文章分类

全部博文(48)

文章存档

2011年(1)

2010年(47)

我的朋友

分类: Python/Ruby

2010-09-21 00:48:35

强大的python字符串解析,利用string模块和正则表达式re 模块
2010-04-29 18:32



1.python字符通常有单引号 ('...')、双引号("...")、三引号("""...""")或('''...''')包围,三引号包含的字符可由多行组成,一般可表示大段的叙述性字符。在使用时基本 没有差别,但双引号和三引号("""...""")中可以包含单引号,三引号('''...''')可以包含双引号,而不需要转义。
 
2.用(\)对特殊字符转义,如(\)、(')、(")。
 
3.常用字 符内 置函数
  1)str.count()  //返回该字符中某个子出现的次数
  2)str.find()   //返回某个子出现在该字符的起始位置
  3)str.lower()  //将该字符全部转化为小写
  4)str.upper()  //转为大写
  5)str.split()  //分割字符,返回字列表,默认以空格分割
  6)len(str)     //返回字符长度
 
  例如:
  >>> str = 'Hello, world'
  >>> str.count('o')
  >>> 2
  >>> str.find('lo')
  >>> 3
  >>> str.lower()
  >>> 'hello, world'
  >>> str.upper()
  >>> 'HELLO, WORLD'
  >>> str.split()
  >>> ['Hello,', 'world']
  >>> str.split(',')
  >>> ['Hello', ' world']
  >>> len(str)
  >>> 13
  >>> str
  >>> 'Hello, world'
 
  以上所有操作都不会改变字符本身!
 
4.正则表达式,re模块
  import re
  常用函数:
  1)compile():   //将正则表达式字符编译成正则re对象
  2)search()     //在目标字符中匹配正则表达式
  3)match()      //从目标字符第一个字符开始匹配正则表达
  search和match匹配成功返回MatchObject对象,失败返回None
 >>> p = re.compile('abc')
 >>> p.search('zabcy')
 <_sre.SRE_Match object at 0x2a95659030>
 不先编译成正则re对象也是可以的,上例也可以为:
 >>> re.search('abc','xabcy')
 <_sre.SRE_Match object at 0x2a95659098>
 
 compile还可加些标志位,例如:re.I(re.IGNORECASE)忽略大小写
 >>> p = re.compile('abc')
 >>> print p.search('xAbCy')
 None
 >>> p = re.compile('abc',re.I)
 >>> print p.search('xAbCy')
 <_sre.SRE_Match object at 0x2a9565a098>
 
 
 search和match区别见下例:
 >>> p = re.compile('abc')
 >>> print p.search('xxxabcyyy')
<_sre.SRE_Match object at 0x2a95659030>
 >>> print p.match('xxxabcyyy')
 None
 >>> print p.match('abcyyy')
 <_sre.SRE_Match object at 0x2a95659098>
 
 
  4)split()      //类似字符内置函数split()
   区别在于:内置split()以确定字符分割,而正则split函数以正则表达式分割

例如:以空格(1个或者多个空格)分割

 >>> p.split('a b   c  d')
['a', 'b', 'c', 'd']

而内置split分割的结果为:

 >>> 'a b   c  d'.split(' ')
['a', 'b', '', '', 'c', '', 'd']

 
  5)findall()     //返回目标字符中匹配正则表达式中所有子列表

 >>> p = re.compile('^([a-z]{2}):([1-9]{3}):(.+)$')
>>> p.findall('as:123:a12')
[('as', '123', 'a12')]

 上例中正则表达式的子为3个用括弧括起的,分别为:'[a-z]{2}'、'[1-9]{3}'、'.+', 分别被as、123、a12匹配,注意 此返回的是匹配字符元组的一维列 表。

  以上比较常用的正则函数,更多用法请参照python手册。
 
5.字符与数字相互转 换,string模块
  import string
  string.atoi(str[,base])  //base为可选参数,表示将字符转换成的进制类型
  数字转换成字符可简单了,直接用str()
 
6.字符与 ASCII转换
  char->ascii  ord()
  ascii->char  chr()
阅读(1162) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~