澳门皇冠金沙网站-澳门皇冠844网站

热门关键词: 澳门皇冠金沙网站,澳门皇冠844网站

python学习第二天,Python中的文本

Chapter01 文本

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: %rn' % 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'bw*isw*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标准库》一书,文本这一章节的学习和理解。 其实在Python中,使用文本这样的...

3.1 基本字符串操作

1.1 string - 文本常量和模板

作用:包含处理文本的常量和类。
1.1.1 函数

maketrans()

translate()`:将一组字符修改为另外一组字符

1.1.2 模板
使用string.Template拼接时,可以在变量前加前缀 $ (如 $var )来标示变量, 或者如果需要与两侧的文本相区分可以使用大括号将变量括起来(如 ${var} )。
通过使用saft_substitute()方法避免未能提供模板所需全部参数时产生的异常。

1.1.3 高级模板 修改string.Template默认语法,调整其在模板体重查找变量名所使用的正则表达式。 1,修改 delimiter 和 idpattern 类属性。2,覆盖 pattern 属性,定义一个全新的正则表达式。

【代码】

1.2 textwrap - 格式化文本段落

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

dedent()

indent()`:缩进

#所有标准的序列操作(索引、分片、乘法、判断成员资格、

1.3 re - 正则表达式

作用:使用形式化模式搜索和修改文本。
1.3.1 函数

compile()

findall()

finditer()`:返回一个迭代器

1.3.2 转义码
1.3.3 锚定
1.3.4 缩写

#

1.4 difflib - 比较序列

作用:比较序列

文本 1.1 string - 文本常量和模板 作用:包含处理文本的常量和类。 1.1.1 函数 maketrans() translate()`:将一组字符修改为另外一组字符 1...

求长度、取最小值和最大值)对字符串同样适用,但字符串是不可改变的website = ''

website[-3:] = 'com'

【结果】

Traceback (most recent call last):

  File"D:/python_file/20180113/test.py", line 4, in

    website[-3:] = 'com'

TypeError: 'str' object does not support item assignment

3.2 字符串格式化(精简版)

【代码】

#在%的左侧放置一个字符串(格式化字符串),而右侧放置希望格式化的值。一般情况下适用元组format = "Hello. %s. %s enough for ya?" #%s部分称为转换说明符,标记了需要插入转换值的位置,# s表示值会被格式化为字符串--若不是字符串,使用str将其转换为字符串values = ('world','Hot')

print(format % values)

#注:如果使用列表或其他元素代替元组,那么序列会被解释为一个值。只有元组和字典可以格式化一个以上的值

#

若在格式化字符串中包括百分号,那么必须使用%%,这样,Python就不会将百分号误认为是转换说明符了

#

格式化实数:可以使用f说明符类型,同时提供精度(句点加上希望保留小数的位数)format = 'P1 with three decimals: %.3f'

from math import pi

print(format % pi)

【结果】

Hello. world. Hot enough for ya?

P1 with three decimals: 3.142

【代码】

#stirng模块提供另外一种格式化值的方法:模板字符串。其中,substitute这个模板方法会用传递进来的关键字参数foo替换字符串中的¥foo**from string import** Template

s = Template(

'$x. glorious $x!')

print(s)

print(s.substitute(x='slum')) #模板调用模板方法并传入参数

#

如果替换字段是单词的一部分,那么参数名必须用括号括起来s = Template("It's ${x}tastic!")

print(s.substitute(x = 'slum'))

#可以使用$$插入美元符号s = Template('Make $$ selling $x')

print(s.substitute(x = 'slum'))

#除了关键字参数之外,还可以使用字典变量提供值/名称对s = Template('A $thing must never $action')

d = {}

d[

'thing'] = 'gentleman'

d['action'] = 'show his socks'

print(s.substitute(d))

【结果】

slum. glorious slum!

It's slumtastic!

Make $ selling slum

A gentleman must never show his socks

3.3 字符串格式化(完整版)

【代码】

#如果右操作数是元组的话,则其中的每一个元素都会被单独格式化,每个值都需要一个对应的转换说明符print('%s

plus %s equals %s' % (1,1,2))

print('%s

plus %s equals %s' % 1,1,2) #Lacks parentheses!

【结果】

1 plus 1 equals 2

Traceback (most recent call last):

  File"D:/python_file/20180113/test.py", line 3, in

    print('%s plus %s equals %s' %1,1,2) #Lacks parentheses!

TypeError: not enough arguments for format string

字符串格式化转换类型

d,i带符号的十进制数

o不带符号的八进制

u不带符号的十进制

x不带符号十六进制(小写)

X不带符号十六进制(大写)

f,F十进制浮点数

C单字符

r字符串(使用repr转换任意Python对象)

s字符串(使用str转换任意Python对象)

3.3.1 简单转换

【代码】

#简单转换只需要写出转换类型print('Price

of eggs:$%d' % 42)

print('Hexadecimal

price of eggs: %x' % 42)

from math import pi

print('Pi:%f...'% pi)

print('Very

inexact estimate of pi: %i' % pi)

print('Using

str: %s' % 42)

print('Using

repr: %r' % 42)

【结果】

Price of eggs:$42

本文由澳门皇冠金沙网站发布于编辑程序,转载请注明出处:python学习第二天,Python中的文本