【Python技巧系列】用parse处理文本

parse是python中的一个文本处理工具包,其中包括 findall(), parse(), format() 等等,  findall() 比较常用(对我来说), format(), parse() 互为逆。

来看看 parse() 的用法:(代码摘抄自文档)

 1 >>> from parse import *
 2
 3 >>> parse("It‘s {}, I love it!", "It‘s spam, I love it!")
 4 <Result (‘spam‘,) {}>
 5 >>> _[0]
 6 ‘spam‘
 7
 8 >>> r = parse("The {} who say {}", "The knights who say Ni!")
 9 >>> print(r)
10 <Result (‘knights‘, ‘Ni!‘) {}>
11
12 #Dotted names are possible though the application must make additional sense of the result:
13 >>> r = parse("Mmm, {food.type}, I love it!", "Mmm, spam, I love it!")
14 >>> print(r)
15 <Result () {‘food.type‘: ‘spam‘}>
16 >>> print(r.named)
17 {‘food.type‘: ‘spam‘}
18 >>> print(r[‘food.type‘])
19 spam
20
21
22 >>> ‘‘.join(r.fixed[0] for r in findall(">{}<", "<p>the <b>bold</b> text</p>"))
23 ‘the bold text‘
24
25
26 #If you’re going to use the same pattern to match lots of strings you can compile it once:
27
28 >>> from parse import compile
29 >>> p = compile("It‘s {}, I love it!")
30 >>> print(p)
31 <Parser "It‘s {}, I love it!">
32 >>> p.parse("It‘s spam, I love it!")
33 <Result (‘spam‘,) {}>
34
35
36 ##use format specification
37 >>> search(‘Age: {:d}\n‘, ‘Name: Rufus\nAge: 42\nColor: red\n‘)
38 <Result (42,) {}>
39
40 #will return None if typing does not match
41 >>> parse(‘Our {:d} {:w} are...‘, ‘Our 3 weapons are...‘)
42 <Result (3, ‘weapons‘) {}>
43
44 >>> parse(‘Our {:d} {:w} are...‘, ‘Our three weapons are...‘)
45 #none
46
47 >>> parse(‘Meet at {:tg}‘, ‘Meet at 1/2/2011 11:00 PM‘)
48 <Result (datetime.datetime(2011, 2, 1, 23, 0),) {}>
49
50 #alignment
51 >>> parse(‘with {:>} herring‘, ‘with     a herring‘)
52 <Result (‘a‘,) {}>
53 >>> parse(‘spam {:^} spam‘, ‘spam    lovely     spam‘)
54 <Result (‘lovely‘,) {}>
55
56 #use a dictionary to do some type-convert
57 >>> def shouty(string):
58 ...    return string.upper()
59 ...
60 >>> parse(‘{:shouty} world‘, ‘hello world‘, dict(shouty=shouty))
61 <Result (‘HELLO‘,) {}>
62
63 #if the type converter has the pattern attribute
64 >>> def parse_number(text):
65 ...    return int(text)
66 >>> parse_number.pattern = r‘\d+‘
67 >>> parse(‘Answer: {number:Number}‘, ‘Answer: 42‘, dict(Number=parse_number))
68 <Result () {‘number‘: 42}>
69 >>> _ = parse(‘Answer: {:Number}‘, ‘Answer: Alice‘, dict(Number=parse_number))
70 >>> assert _ is None, "MISMATCH"
71
72
73 #use with_pattern(pattern) decorator
74 >>> from parse import with_pattern
75 >>> @with_pattern(r‘\d+‘)
76 ... def parse_number(text):
77 ...    return int(text)
78 >>> parse(‘Answer: {number:Number}‘, ‘Answer: 42‘, dict(Number=parse_number))
79 <Result () {‘number‘: 42}>
时间: 2024-10-05 21:22:50

【Python技巧系列】用parse处理文本的相关文章

【Python技巧系列】unittest:python自带测试模块【转载】

****本文转载自http://www.cnpythoner.com/post/303.html**** 1 python unittest单元测试方法和用例 2 3 python内部自带了一个单元测试的模块,pyUnit也就是我们说的:unittest 4 5 先介绍下unittest的基本使用方法: 6 7 1.import unittest 8 2.定义一个继承自unittest.TestCase的测试用例类 9 3.定义setUp和tearDown,在每个测试用例前后做一些辅助工作. 1

【Python技巧系列】条件语句一行实现

发现了一种巧妙的条件语句实现方式:(是在pattern的README中的一个小例子里面看到的) 1 1 if A < 1: 2 2 B 3 3 else: 4 4 C 5 5 6 6 ###can be transformed to 7 7 8 8 A < 1 and B or C 9 9 得益于python灵活的格式转换,  and, or 这些逻辑符号我一直认为计算得到的是布尔值,只能用在判断语句中,比如: 1 if 1 and 2: 2 print 1 3 4 >> 1 5

【Python技巧系列】argparser处理字典

看scikit-learn的源码时,在benchmark的benchmark_20newsgroups.py(关于20newsgroups数据集看这里)中看到了一个有意思的用法,如下: 1 import argparse 2 3 ESTIMATORS = { 4 "dummy": DummyClassifier(), 5 "random_forest": RandomForestClassifier(n_estimators=100, 6 max_features=

python基础系列教程——Python3.x标准模块库目录

python基础系列教程——Python3.x标准模块库目录 文本 string:通用字符串操作 re:正则表达式操作 difflib:差异计算工具 textwrap:文本填充 unicodedata:Unicode字符数据库 stringprep:互联网字符串准备工具 readline:GNU按行读取接口 rlcompleter:GNU按行读取的实现函数 二进制数据 struct:将字节解析为打包的二进制数据 codecs:注册表与基类的编解码器 数据类型 datetime:基于日期与时间工具

Python学习系列(六)(模块)

一,模块的基本介绍 1,import引入其他标准模块 标准库:Python标准安装包里的模块. 引入模块的几种方式: i)引入模块:import   moduleName ii)引入模块下的函数:from moduleName import function1,function2,-- iii)引入模块下的所有函数:from moduleName import * 使用模块里的函数的方法: moduleName.function(agrs) 示例: >>> import math >

(原创)Python字符串系列(1)——str对象

在本博客 <Python字符串系列> 中,将介绍以下内容: Python内置的str对象及操作 字符串的格式化 Python中的Unicode字符串 Python中的正则表达式 re模块 本文将介绍Python内置的 str 类型,列举Python中字符串对象支持的方法,使用这些方法可以实现强大的字符串处理功能. 在Python 2 中,普通字符串与Unicode字符串有着明确的区分,二者都是Python内置的基本类型,例如: >>> type(str) <type '

Android Studio使用技巧系列教程(四)

尊重劳动成果,转载请注明出处:http://blog.csdn.net/growth58/article/details/46866503 关注新浪微博:@于卫国 邮箱:[email protected] 这是我发表在Google+上的Android Studio每日技巧的第三篇文章.你可以从这查看以前发表的文章. 关于键位映射 Android Studio 提供了不同的键位映射(即快捷键和它对应的操作之间的映射),你可以在"Settings->Keymap"菜单里面查看当前所使

Python学习系列(一)(基础入门)

Python入门 本系列为Python学习相关笔记整理所得,IT人,多学无害,多多探索,激发学习兴趣,开拓思维,不求高大上,只求懂点皮毛,作为知识储备,不至于落后太远.如果兴趣学习者,推荐一个基础视频:http://edu.51cto.com/lesson/id-11637.html 本文主要介绍Python的相关背景,环境搭建. 一.了解Python 1,关于Python的语言特点: 借用Python官网Https://www.python.org的解释: Python is powerful

爱情有36计,不如看我这26条python技巧!

作者 Peter Gleeson 是一名数据科学家,日常工作几乎离不python.一路走来,他积累了不少有用的技巧和tips,现在就将这些技巧分享给大家.这些技巧将根据其首字母按A-Z的顺序进行展示. ALL OR ANY Python之所以成为这么一门受欢迎的语言一个原因是它的可读性和表达能力非常强.Python也因此经常被调侃为“可执行的伪代码”.不信你看: x = [True, True, False]if any(x):    print("At least one True"