python中的文本(二)

本文主要记录和总结本人在阅读《Python标准库》一书,文本这一章节的学习和理解。

其实在Python中,使用文本这样的一些方法是特别常用的一件事。在一般的情况下,都会使用String这样的一个类,应该算是Python中最基础的一个标准类了。

1.3.6 用组解析匹配

match.groups()会按照表达式中与字符串匹配的组的顺序返回一个字符串序列。

使用group()可以得到某个组的匹配。

    #组解析
    text='This is a text -- with punctuation.'

    print 'Input text:  ', text

    regex=re.compile(r'(\bt\w+)\W+(\w+)')

    print 'pattern:  ', regex.pattern

    match=regex.search(text)

    print 'Entire match: ',match.group(0)
    print 'Word starting with t: ',match.group(1)
    print 'Word after t word: ',match.group(2)

Python对基本分组的语法进行了拓展,增加了命名组(named group)。通过名字来指示组,方便可以更容易的修改模式,而不必同时修改使用了该匹配结果的代码。

语法:(?P<name>pattern)

    #命名组
    print '-'*30
    for pattern in [r'^(?P<first_word>\w+)',
                   r'(?P<last_word>\w+)\S*$',
                   r'(?P<t_word>\bt\w+)\W+(?P<other_word>\w+)',
                   r'(?P<ends_with_t>\w+t)\b'
        ]:
        regex=re.compile(pattern)
        match=regex.search(text)
        print 'Matching "%s"' % pattern
        print ' ',match.groups()
        print ' ',match.groupdict()
        print '\n'

使用groupdict()可以获取一个字典,它将组名映射到匹配的子串。

    #更新后的test_pattern()
    print '-'*30
    def test_pattern(text, patterns=[]):
    """
    Given the source text and a list of patters,
    look for matches for each pattern within the text and print them to stdout.
    """
    #look for each pattern in the text and print the results
    for pattern, desc in patterns:
        print 'pattern %r (%s) \n' %(pattern, desc)
        print '%r' % text
        for match in re.finditer(pattern,text):
            s=match.start()
            e=match.end()
            prefix=' '*(s)
            print '  %s%r%s' % (prefix,text[s:e],' '*(len(text)-e))
            print match.groups()
            if match.groupdict():
                print '%s%s'%(' '*(len(text)-s),match.groupdict())
        print
    return

    test_pattern(
             'abbaabbba',
             [ (r'a((a*)(b*))','a followed by 0-n a and 0-n b'),]
             )

时间: 2024-08-29 02:25:34

python中的文本(二)的相关文章

python中几大模块二

python中几大模块二 sys模块 sys模块也是python种一个非常强大的模块,功能非常的多,这里我其实也没接触到几个,暂时记录一下目前常用的几个功能函数. sys.argv 这个函数的功能是在程序外部向程序内部传递参数 .例如: import sys print(sys.argv[:]) print(sys.argv[0]) print(sys.argv[1]) print(sys.argv[2]) print(sys.argv[3]) #外部调用解释器执行该文件 python test

Python中的文本(一)

本文主要记录和总结本人在阅读<Python标准库>一书,文本这一章节的学习和理解. 其实在Python中,使用文本这样的一些方法是特别常用的一件事.在一般的情况下,都会使用String这样的一个类,应该算是Python中最基础的一个标准类了. 1.1 函数 string类中的capwords()和maketrans(). capwords()的作用是将一个字符串中的所有单词的首字母大写: maketrans()函数将创建转换表,可以translate()方法将一组字符修改成另一组字符,这种做法

python中的生成器(二)

一. 剖析一下生成器对象 先看一个简单的例子,我们创建一个生成器函数,然后生成一个生成器对象 def gen(): print('start ..') for i in range(3): yield i print('end...') G=gen() print(type(G)) >> <type 'generator'> 表示G是一个生成器对象,我们来剖析一下,里面到底有什么 print(dir(G)) >>['__class__', '__delattr__',

在python中使用正则表达式(二)

这一节主要学习一下compile()函数和group()方法 1.  re.compile() compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,然后就可以用编译后的正则表达式去匹配字符串 语法如下:>>> help(re.compile) Help on function compile in module re: compile(pattern, flags=0) Compile a regular expression pattern, retu

Python中的 matplotlib(二)随机漫步

创建一个随机漫步的类: 1 from random import choice 2 3 4 class RandomWalk(): 5 '''一个生成随机漫步数据的类''' 6 7 def __init__(self, num_points=5000): 8 '''初始化随机漫步的属性''' 9 self.num_points = num_points 10 '''所有的随机漫步都始于(0,0)''' 11 self.x_values = [0] 12 self.y_values = [0] 1

python 中cPickle学习二

写入: import cPickle as p shoplistfile = 'data.data' shoplist = ['meili',['current_account',[100000,1222],'basis_account',[5555555,888]], 'qinshan',['current_account',[1089000,12292],'basis_account',[55555955,888]], 'jiayou',['current_account',[10000,1

在python中定义二维数组

发表于 http://liamchzh.0fees.net/?p=234&i=1 一次偶然的机会,发现python中list非常有意思. 先看一段代码 [py]array = [0, 0, 0]matrix = [array*3]print matrix## [[0,0,0,0,0,0,0,0,0]][/py] 这段代码其实没有新建一个二维数组 再看一段代码 [py]array = [0, 0, 0]matrix = [array] * 3print matrix## [[0, 0, 0], [

【转】Python数据类型之“文本序列(Text Sequence)”

[转]Python数据类型之“文本序列(Text Sequence)” Python中的文本序列类型 Python中的文本数据由str对象或字符串进行处理. 1.字符串 字符串是Unicode码值的不可变序列.字符串字面量有多种形式: 单引号:'允许嵌入"双"引号' 双引号:"允许嵌入'单'引号" 三引号:'''三个单引号''', """三个双引号""" 说明: a) 三引号的字符串可以跨越多行,所关联的空

Python中的HTMLParser、cookielib抓取和解析网页、从HTML文档中提取链接、图像、文本、Cookies(二)

对搜索引擎.文件索引.文档转换.数据检索.站点备份或迁移等应用程序来说,经常用到对网页(即HTML文件)的解析处理.事实上,通过 Python语言提供的各种模块,我们无需借助Web服务器或者Web浏览器就能够解析和处理HTML文档.本文上篇中,我们介绍了一个可以帮助简化打开 位于本地和Web上的HTML文档的Python模块.在本文中,我们将论述如何使用Python模块来迅速解析在HTML文件中的数据,从而处理特定的 内容,如链接.图像和Cookie等.同时还会介绍如何规范HTML文件的格式标签