Python标准库-string模块《未完待续》

>>> import string
>>> s='hello rollen , how are you '
>>> string.capwords(s)
'Hello Rollen , How Are You'          #每个单词的首字母大写
>>> string.split(s)
['hello', 'rollen', ',', 'how', 'are', 'you']     #划分为列表 默认是以空格划分
>>> s='1+2+3'
>>> string.split(s,'+')                 #以‘+’号进行划分
['1', '2', '3']

maketrans()方法会创建一个能够被translate()使用的翻译表,可以用来改变一些列的字符,这个方法比调用replace()更加的高效。

例如下面的例子将字符串s中的‘a,改为1,‘b’改为2,‘c’改为3’:

>>> leet=string.maketrans('abc','123')
>>> s='abcdef'
>>> s.translate(leet)
'123def'
>>> leet=string.maketrans('abc','123')
>>> s='aAaBcC'
>>> s.translate(leet)
'1A1B3C'

string中的template的小例子:

import string
values = { 'var':'foo' }
t = string.Template("""
Variable : $var
Escape : $$
Variable in text: ${var}iable
""")
print 'TEMPLATE:', t.substitute(values)
s = """
Variable : %(var)s
Escape : %%
Variable in text: %(var)siable
"""
print 'INTERPOLATION:', s % values

上面的例子的输出为:

TEMPLATE: 
Variable : foo 
Escape : $ 
Variable in text: fooiable

INTERPOLATION: 
Variable : foo 
Escape : % 
Variable in text: fooiable

但是上面的substitute如果提供的参数不足的时候,会出现异常,我们可以使用更加安全的办法,如下:

import string
values = { 'var':'foo' }
t = string.Template("$var is here but $missing is not provided")
try:
    print 'substitute() :', t.substitute(values)
except KeyError, err:
    print 'ERROR:', str(err)
print 'safe_substitute():', t.safe_substitute(values)

上面例子的输出为:

substitute() : ERROR: 'missing' 
safe_substitute(): foo is here but $missing is not provided

 

下面来看一些template的高级用法:

import string
template_text = '''
Delimiter : %%
Replaced : %with_underscore
Ignored : %notunderscored
'''
d = { 'with_underscore':'replaced',
'notunderscored':'not replaced',
}
class MyTemplate(string.Template):
    delimiter = '%'
    idpattern = '[a-z]+_[a-z]+'
t = MyTemplate(template_text)
print 'Modified ID pattern:'
print t.safe_substitute(d)

输出为:

Modified ID pattern:

Delimiter : % 
Replaced : replaced 
Ignored : %notunderscored

在这个例子中,我们通过自定义属性delimiter 和 idpattern自定了规则,我们使用%替代了美元符号$,而且我们定义的替换规则是被替换的变量名要包含下环线,所以在上面的例子中,只替换了一个。

 

import textwrap

sample_text = '''
The textwrap module can be used to format text for output in
situations where pretty-printing is desired. It offers
programmatic functionality similar to the paragraph wrapping
or filling features found in many text editors.
'''

print 'No dedent:\n'
print textwrap.fill(sample_text, width=50)

输出为:

No dedent:

The textwrap module can be used to format text 
for output in situations where pretty-printing is 
desired. It offers programmatic functionality 
similar to the paragraph wrapping or filling 
features found in many text editors.

上面的例子设置宽度为50,下面的例子我们来移除缩进

import textwrap

sample_text = '''
The textwrap module can be used to format text for output in
situations where pretty-printing is desired. It offers
programmatic functionality similar to the paragraph wrapping
or filling features found in many text editors.
'''

dedented_text = textwrap.dedent(sample_text)
print 'Dedented:'
print dedented_text

Dedented:

The textwrap module can be used to format text for output in 
situations where pretty-printing is desired. It offers 
programmatic functionality similar to the paragraph wrapping 
or filling features found in many text editors.

Hit any key to close this window...

下面来一个对比:

import textwrap

sample_text = '''
The textwrap module can be used to format text for output in
situations where pretty-printing is desired. It offers
programmatic functionality similar to the paragraph wrapping
or filling features found in many text editors.
'''

dedented_text = textwrap.dedent(sample_text).strip()
for width in [ 45, 70 ]:
    print '%d Columns:\n' % width
    print textwrap.fill(dedented_text, width=width)
    print

上面的例子的输出如下:

45 Columns:

The textwrap module can be used to format
text for output in situations where pretty-
printing is desired. It offers programmatic
functionality similar to the paragraph
wrapping or filling features found in many
text editors.

70 Columns:

The textwrap module can be used to format text for output in
situations where pretty-printing is desired. It offers programmatic
functionality similar to the paragraph wrapping or filling features
found in many text editors.

Hit any key to close this window...

我们也可以设置首行和剩余的行:

import textwrap

sample_text = '''
The textwrap module can be used to format text for output in
situations where pretty-printing is desired. It offers
programmatic functionality similar to the paragraph wrapping
or filling features found in many text editors.
'''

dedented_text = textwrap.dedent(sample_text).strip()
print textwrap.fill(dedented_text,
initial_indent=' ',
subsequent_indent=' ' * 4,
width=50,
)

输出为:

The textwrap module can be used to format text 
    for output in situations where pretty-printing 
    is desired. It offers programmatic 
    functionality similar to the paragraph 
    wrapping or filling features found in many 
    text editors.

上面的例子设置首行缩进1个空格,其余行缩进4个空格

 

在文本中查找:

import re
pattern = 'this'
text = 'Does this text match the pattern?'
match = re.search(pattern, text)
s = match.start()
e = match.end()
print 'Found "%s"\nin "%s"\nfrom %d to %d ("%s")' % \
(match.re.pattern, match.string, s, e, text[s:e])

start和end返回匹配的位置

输出如下:

Found "this" 
in "Does this text match the pattern?" 
from 5 to 9 ("this")

 

re includes module-level functions for working with regular expressions as text strings, 
but it is more efficient to compile the expressions a program uses frequently. The compile() function converts an expression string into a RegexObject.

import re
# Precompile the patterns
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'

Text: 'Does this text match the pattern?'

Seeking "this" -> match! 
Seeking "that" -> no match 

The module-level functions maintain a cache of compiled expressions. However, 
the size of the cache is limited, and using compiled expressions directly avoids the 
cache lookup overhead. Another advantage of using compiled expressions is that by 
precompiling all expressions when the module is loaded, the compilation work is shifted 
to application start time, instead of to a point when the program may be responding to 
a user action.

 

So far, the example patterns have all used search() to look for single instances of 
literal text strings. The findall() function returns all substrings of the input that 
match the pattern without overlapping.

import re
text = 'abbaaabbbbaaaaa'
pattern = 'ab'
for match in re.findall(pattern, text):
    print 'Found "%s"' % match

Found "ab" 
Found "ab" 

finditer() returns an iterator that produces Match instances instead of the 
strings returned by findall().

import re
text = 'abbaaabbbbaaaaa'
pattern = 'ab'
for match in re.finditer(pattern, text):
    s = match.start()
    e = match.end()
    print 'Found "%s" at %d:%d' % (text[s:e], s, e)

Found "ab" at 0:2 
Found "ab" at 5:7

时间: 2024-10-14 22:06:24

Python标准库-string模块《未完待续》的相关文章

Python标准库defaultdict模块使用示例

  Python标准库中collections对集合类型的数据结构进行了很多拓展操作,这些操作在我们使用集合的时候会带来很多的便利,多看看很有好处. defaultdict是其中一个方法,就是给字典value元素添加默认类型,之前看到过但是没注意怎么使用,今天特地瞅了瞅. 首先是各大文章介绍的第一个例子: 代码如下: import collections as coll def default_factory(): return 'default value' d = coll.defaultd

Python标准库之Sys模块使用详解

  这篇文章主要介绍了Python标准库之Sys模块使用详解,本文讲解了使用sys模块获得脚本的参数.处理模块.使用sys模块操作模块搜索路径.使用sys模块查找内建模块.使用sys模块查找已导入的模块等使用案例,需要的朋友可以参考下 sys 模块提供了许多函数和变量来处理 Python 运行时环境的不同部分. 处理命令行参数 在解释器启动后, argv 列表包含了传递给脚本的所有参数, 列表的第一个元素为脚本自身的名称. 使用sys模块获得脚本的参数 代码如下: print "script n

使用Python标准库中的wave模块绘制乐谱的简单教程_python

在本文中,我们将探讨一种简洁的方式,以此来可视化你的MP3音乐收藏.此方法最终的结果将是一个映射你所有歌曲的正六边形网格地图,其中相似的音轨将处于相邻的位置.不同区域的颜色对应不同的音乐流派(例如:古典.嘻哈.重摇滚).举个例子来说,下面是我所收藏音乐中三张专辑的映射图:Paganini的<Violin Caprices>.Eminem的<The Eminem Show>和Coldplay的<X&Y>. 为了让它更加有趣(在某些情况下更简单),我强加了一些限制.

Python标准库——走马观花

原文:Python标准库--走马观花 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢!   Python的一大好处在于它有一套很有用的标准库(standard library).标准库是随着Python一起安装在你的电脑中的,是Python的一部分 (当然也有特殊情况.有些场合会因为系统安全性的要求,不使用全部的标准库,比如说Google App Engine).   利用已有的类(class)和函数(function)进行开发

Python标准库01 正则表达式 (re包)

原文:Python标准库01 正则表达式 (re包) 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢!   我将从正则表达式开始讲Python的标准库.正则表达式是文字处理中常用的工具,而且不需要额外的系统知识或经验.我们会把系统相关的包放在后面讲解.   正则表达式(regular expression)主要功能是从字符串(string)中通过特定的模式(pattern),搜索想要找到的内容. 语法 之前,我们简介了字符串相关

python3怎么安装一些不在标准库的模块

问题描述 python3怎么安装一些不在标准库的模块 我按以下来安装的,但总是失败 我用的是python 3.5,听说pip已被集成到标准库中,就没另外安装pip,我在命令行下输入pip,也没提示"不是内部和外部命令什么的".上图中我安装pip的gevent,就报错,我试着安装twisted,也是出错. 请问怎么解决? 解决方案 python官方网站被和谐了,你需要用代理访问.你懂的. 解决方案二: Python安装标准库Python标准库使用手记:os模块Python标准库之os模块

obj-c编程15[Cocoa实例04]:基于Core Data的多文档程序示例[未完待续]

    上一个例子我们使用的模式数据实际上是基于一个Person数组,现在我们看一下如何使用Cocoa中的Core Data框架支持,几乎不用写一行代码,完成模式数据的建立.     我们这里模式的元素使用的是Car,其属性直接在Xcode中设置: 可以看到Car类型含有6中不同属性.接下来删除窗口中的文本控件,添加Array Controller控件,并将其Managed Object Context与File's Owner的managedObjectContext绑定.如下图: 将控制器的

Python标准库的学习准备

原文:Python标准库的学习准备 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢!   Python标准库是Python强大的动力所在,我们已经在前文中有所介绍.由于标准库所涉及的应用很广,所以需要学习一定的背景知识.   硬件原理 这一部份需要了解内存,CPU,磁盘存储以及IO的功能和性能,了解计算机工作的流程,了解指令的概念.这些内容基础而重要. Python标准库的一部份是为了提高系统的性能(比如mmap),所以有必要了

投射式触摸屏自电容与互电容工作原理基础(未完待续)

一.电阻屏触控原理: 类似可变电阻,当可变电阻的两端接一个正电压V+,另一端接地,当调整电阻值后,测量调整 点与接地端的电压值,然后根据欧姆定律,计算出调整点与接地点的电压值. 二.电容屏常见形式: (1)表面电容式(SCT,Surface,Capacitive Touch) 当手指触摸在金属层上时,由于人体电场,用户触摸屏表面时形成一个耦合电容, 对于高频电流来说,电容是直接道题,于是手指从接触点吸走一个很小的电流.这个电流 分从触摸屏的四个电极中流出,并且流经这四个电极的电流与手指到四角的距