Python中的文本(一)

本文主要记录和总结本人在阅读《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
    
时间: 2024-11-06 03:07:05

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

python中的文本(二)

本文主要记录和总结本人在阅读<Python标准库>一书,文本这一章节的学习和理解. 其实在Python中,使用文本这样的一些方法是特别常用的一件事.在一般的情况下,都会使用String这样的一个类,应该算是Python中最基础的一个标准类了. 1.3.6 用组解析匹配 match.groups()会按照表达式中与字符串匹配的组的顺序返回一个字符串序列. 使用group()可以得到某个组的匹配. #组解析 text='This is a text -- with punctuation.' pr

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

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

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

Pandas: 如何将一列中的文本拆分为多行? 在数据处理过程中,经常会遇到以下类型的数据: 在同一列中,本该分别填入多行中的数据,被填在一行里了,然而在分析的时候,需要拆分成为多行. 在上图中,列名为”Country” ,index为4和5的单元格内,值为”UK/Australia”和”UK/Netherland”. 今天,我们来介绍将含有多值的内容分拆成多行的几种方法. 加载数据 PS:可以通过左右滑动来查看代码 import pandas as pd df = pd.DataFrame({

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

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

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

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

用Python建一个OCR服务器,直接提取图中的文本

Why? OCR(又叫光学字符识别)已经成为Python的一个常用工具.随着开源库Tesseract和Ocrad的出现,越来越多的程序员用OCR来编写自己的库文件和bot病毒.一个OCR的小例子,如用OCR直接从截图中提取文本,省去了重新键入的麻烦. 开始的步骤 开始之前,我们需要开发一个后端服务层来表示OCR引擎的结果.这样你就可以用你喜欢的方式来向端用户表示你的结果.本文之后将会详细介绍.除此之外,我们还需要添加一点后端代码来生成HTML表格,以及一些使用这些API的前段代码.这部分本文没有

Python中读取txt文本出现:SyntaxError: (unicode error) &#39;unicodeescape&#39; codec can&#39;t decode bytes in position 2-3: truncated \UXXXXXXXX escape问题解决

windows中的路径是反斜杠\,然而反斜杠\在python中有着转义字符的意义,所以在py文件中写windows文件路径的时候,要特别注意反斜杠\的使用. 下面有三种解决方式: 1 # 方式一:转义的方式 2 'c:\\users\xxx\desktop\a.txt' 3 #方式二:显式声明字符串不用转义 4 r'c:\users\xxx\desktop\a.txt' 5 #方式三:使用linux的路径 6 'c:/users/xxx/desktop/a.txt' Python中读取txt文本

XGBoost:在Python中使用XGBoost

原文:http://blog.csdn.net/zc02051126/article/details/46771793 在Python中使用XGBoost 下面将介绍XGBoost的Python模块,内容如下: * 编译及导入Python模块 * 数据接口 * 参数设置 * 训练模型l * 提前终止程序 * 预测 A walk through python example for UCI Mushroom dataset is provided. 安装 首先安装XGBoost的C++版本,然后进

Python中re(正则表达式)模块函数学习

今天学习了Python中有关正则表达式的知识.关于正则表达式的语法,不作过多解释,网上有许多学习的资料.这里主要介绍Python中常用的正则表达式处理函数. 方法/属性 作用 match() 决定 RE 是否在字符串刚开始的位置匹配 search() 扫描字符串,找到这个 RE 匹配的位置 findall() 找到 RE 匹配的所有子串,并把它们作为一个列表返回 finditer() 找到 RE 匹配的所有子串,并把它们作为一个迭代器返回 match() 函数只检查 RE 是否在字符串开始处匹配