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

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

1.1 函数



string类中的capwords()和maketrans()。

capwords()的作用是将一个字符串中的全部单词的首字母大写。

maketrans()函数将创建转换表,能够translate()方法将一组字符改动成还有一组字符。这样的做法比重复调用replace()更为高效。

string中有一个叫模板的功能。

相同是用来做字符的拼接的。

高级的模板能够改动string.Template的默认语法,为此须要调整它在模板中查找变量名所使用的正則表達式。

#############################################################
#test about matetrans()
leet = string.maketrans('asdfghjk', '12345678')
print s.translate(leet)
print s #############################################################
#test about Template()
values = {'var':'foo'} t=string.Template("""
Variable : $var
Escape : $$
Variable in text: ${var}iable
""") print 'TEMPLATE:', t.substitute(values) s="""
Variable : %(var)ss Escape : %%
Variable in text: %(var)sssssiable
""" print 'INTERPOLATION:', s%values

1.2 textwrap()——格式化文本段落



作用:通过调整换行符在段落中出现的位置来格式化文本。



1.3 re-正則表達式



作用:使用形式化模式搜索和改动文本。

regular expression。

1.3.1 re中搜索文本中的模式。

import re

print '-'*30
#about regular expression search() pattern = 'this'
text='Does this text match the pattern?' match = re.search(pattern, text) s=match.start()
e=match.end() print 'Dound "%s" \nin "%s" \nfrom %d to %d ("%s")' % \
(match.re.pattern,match.string,s,e,text[s:e]) #start()和end()方法能够给出字符串中对应的索引。

1.3.2 编译正則表達式



re包括一些模块级的函数。用于处理作为文本字符串的正則表達式。对于频繁使用的表达式,编译这些表达式会更加的高效。

compile()函数会把一个表达式字符串转换成为一个RegexObject。

print '-'*30
#about the Compile()
regexes=[re.compile(p)
for p in ['this','that']
]
text='Does this text match the pattern?' print 'Text: %r\n' % text for regex in regexes:
print 'seeking "%s" ->' % regex.pattern if regex.search(text):
print 'match!'
else:
print 'no match!'

模块级函数会维护已编译表达式的一个缓存。可是这个缓存的大小是有限的。直接使用已编译的表达式能够避免缓存查找开销。使用已编译表达式的还有一个优点是,把编译的过程进行了提前。在某种程度上优化了程序执行过程中的效率。



1.3.3 多重匹配



search()在前面中,是用来查找文本字符串中的单个实例。

findall()函数会返回输入中与模式匹配的,而不重叠的全部子串。

print '-'*30
#about the findall()
text = 'bbbbbababbababbabbbaba'
pattern = 'ba' for match in re.findall(pattern, text):
print match print '-'*30
#about the finditer()
#finditer会返回一个迭代器,能够生成match实例。而不像findall()是直接返回的字符串。 text='aaaadaaaaadadadada' pattern='da' for match in re.finditer(pattern,text):
s=match.start()
e=match.end()
print 'Found "%s" at %d:%d' % (text[s:e],s,e)

1.3.4 模式语法



Python的正則表達式的模式语法。



1.3.5 限制搜索



假设提前已经知道仅仅须要搜索整个输入的一个子集,能够告诉re先知搜索范围,从而进一步约束正則表達式。

print '-'*30
#一种iterall()的不太高效的实现方式。 text='this is some text -- with punctuation.' pattern=re.compile(r'\b\w*is\w*\b') print 'text:', text pos=0
while True:
match=pattern.search(text,pos)
print match
if not match:
break
s=match.start()
e=match.end()
print s,e
print '%d: %d = "%s"' % (s,e-1,text[s:e])
pos=e

Python中的文本(一)的更多相关文章

  1. python中的文本操作

    python如何进行文本操作 1.能调用方法的一定是对象,比如数值.字符串.列表.元组.字典,甚至文件也是对象,Python中一切皆为对象. str1 = 'hello' str2 = 'world' ...

  2. python中使用%与.format格式化文本

    初学python,看来零零碎碎的格式化文本的方法,总结一下python中格式化文本的方法.使用不当的地欢迎指出谢谢. 1.首先看使用%格式化文本 常见的占位符: 常见的占位符有: %d 整数 %f 浮 ...

  3. 使用Python中的NLTK和spaCy删除停用词与文本标准化

    概述 了解如何在Python中删除停用词与文本标准化,这些是自然语言处理的基本技术 探索不同的方法来删除停用词,以及讨论文本标准化技术,如词干化(stemming)和词形还原(lemmatizatio ...

  4. Python数据类型之“文本序列(Text Sequence)”

    Python中的文本序列类型 Python中的文本数据由str对象或字符串进行处理. 1.字符串 字符串是Unicode码值的不可变序列.字符串字面量有多种形式: 单引号:'允许嵌入"双&q ...

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

    [转]Python数据类型之“文本序列(Text Sequence)” Python中的文本序列类型 Python中的文本数据由str对象或字符串进行处理. 1.字符串 字符串是Unicode码值的不 ...

  6. Pandas: 如何将一列中的文本拆分为多行? | Python

    Pandas: 如何将一列中的文本拆分为多行? 在数据处理过程中,经常会遇到以下类型的数据: 在同一列中,本该分别填入多行中的数据,被填在一行里了,然而在分析的时候,需要拆分成为多行. 在上图中,列名 ...

  7. 学习笔记--python中使用多进程、多线程加速文本预处理

    一.任务描述 最近尝试自行构建skip-gram模型训练word2vec词向量表.其中有一步需要统计各词汇的出现频率,截取出现频率最高的10000个词汇进行保留,形成常用词词典.对于这个问题,我建立了 ...

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

    对搜索引擎.文件索引.文档转换.数据检索.站点备份或迁移等应用程序来说,经常用到对网页(即HTML文件)的解析处理.事实上,通过 Python语言提供的各种模块,我们无需借助Web服务器或者Web浏览 ...

  9. [译]使用BeautifulSoup和Python从网页中提取文本

    如果您要花时间浏览网页,您可能遇到的一项任务就是从HTML中删除可见的文本内容. 如果您使用的是Python,我们可以使用BeautifulSoup来完成此任务. 设置提取 首先,我们需要获取一些HT ...

随机推荐

  1. 《TensorFlow学习指南深度学习系统构建详解》英文PDF+源代码+部分中文PDF

    主要介绍如何使用 TensorFlow 框架进行深度学习系统的构建.涉及卷积神经网络.循环神经网络等核心的技术,并介绍了用于图像数据和文本序列数据的模型.给出了分布式深度学习系统在TensorFlow ...

  2. CentOS下安装jdk1.8.0_181

    我安装的为 jdk1.8.0_181 1.检查是否存在open jdk,不存在直接跳到第 5 步 java -version 查看当前系统自带的open jdk版本信息 2.查看包含java字符串的文 ...

  3. or in 、Object.keys()以及Object.getOwnPropertyNames有什么区别?

    or in .Object.keys()以及Object.getOwnPropertyNames的区别 var obj= Object.create(parent, { b: { value: 2, ...

  4. 将yyyyMMdd格式的字符串转成日期DateTime格式

    1.DateTime dt= DateTime.ParseExact("20110720", "yyyyMMdd", Thread.CurrentThread. ...

  5. Floodlight中 处理packetin消息的顺序(2)

         前面通过阅读代码知道了怎样推断各个模块处理某个消息的先后顺序.那么内部是怎样实现的呢?      每当一个模块表示对一个消息感兴趣的时候,就会调用IFloodlightProviderSer ...

  6. mongoDB简单介绍及安装

    近期一段时间对mongoDB进行了简单的学习,从它是什么?干什么?怎么用?优缺点?这一系列的疑问到如今可以简单运用.我想须要对其进行简单的总结和概述.那么这一篇就从最基础的開始,对其主要的概念和安装来 ...

  7. hdu5288 OO’s Sequence 二分 多校联合第一场

    OO's Sequence Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) ...

  8. PHP的模板引擎smarty原理是什么(整理)

    PHP的模板引擎smarty原理是什么(整理) 一.总结 一句话总结:其实所有的模板引擎的工作原理是差不多的,无非就是在php程序里面用正则匹配将模板里面的标签替换为php代码从而将两者混合为一个ph ...

  9. XHTML是什么?XHTML与HTML的区别

    经常看到web前端开发人员口中提到XHTML,相信很多web前端开发的新手们感到很疑惑,甚至有些时候认为XHTML就是HTML,这个观点是错误的,今天零度就给大家好好说道说道XHTML和HTML的区别 ...

  10. CentOS下编译安装PHP5.6

    目录 1 安装php依赖的扩展 2 下载解压PHP 3 编译PHP 4 让Apache支持PHP 5 测试安装  安装php依赖的扩展: yum install -y libxml2-devel op ...