Python文本处理(1)
每次处理一个字符
解决方法:
创建列表
thestring='abcdefg'
thelist=list(thestring)
print thelist
结果
['a', 'b', 'c', 'd', 'e', 'f', 'g']
使用for语句循环遍历
thestring='abcdefg'
for c in thestring:
print c
使用列表推导式 (注意这里使用ord表示将字符转为字符值,例如a转为97)
thestring='abcdefg'
results=map(ord,thestring)
print results
讨论:
想要获得字符串中所有字符的集合,调用sets.Set
import sets
magic_chars=sets.Set('abracadabra')
poppins_chars=sets.Set('supercalifragilisticexpialidocious')
print ''.join(magic_chars & poppins_chars)
字符和字符值之间的转换
解决方法:
使用函数ord和chr
print ord('a')
print chr(97)
测试一个对象是否为一个类字符串(对象是否有字符串的行为模式)
解决方法:
使用isinstance和basestring检查
def isAString(anobj):
return isinstance(anobj,basestring) anobj='abcde'
print isAString(anobj)
otherobj=list(anobj)
print isAString(otherobj)
字符串对齐(左对齐、居中对齐、右对齐)
解决方法:
使用string对象的ljust、rjust和center,参数指明宽度
print '|','hey'.ljust(20),'|','hey'.rjust(20),'|','hey'.center(20),'|'
讨论:
可以不打印空格,而以其他字符打印,只需增加第二个参数
print 'hey'.center(20,'+')
去除字符串两端的空格
解决方法:
使用string对象的lstrip、rstrip和strip
x=' hey '
print '|',x.lstrip(),'|',x.rstrip(),'|',x.strip(),'|'
合并字符串
解决方法;
使用字符串操作符join
x=['I','Love','Python']
largestring=' '.join(x)
print largestring
同样,使用最基本的%也可以达到这样的效果
x=('I','Love','Python')
largestring='%s %s %s !' % x
print largestring
讨论:
当然,使用字符串的+操作似乎能够获得更加简洁的操作,但别忘了,在python中,字符串是无法改变的,任何的改动都将会创建当前字符串的一个副本,当有大量的小段的字符串相加时,所创建的副本正比于其平方,此时使用join方式就是一个必要的选择了。当需要在创建的新的字符串中添加额外的内容时,使用%较为方便。
将字符串逐字符或逐词反转
解决方法:
使用步长为-1的切片方法
astring='I Love Python'
revchars=astring[::-1]
print revchars 结果
nohtyP evoL I
按照单词进行反转,则需要创建一个单词的列表,将列表反转,最后使用join合并
astring='I Love Python'
revwords=' '.join(astring.split()[::-1])
print revwords 结果
Python Love I
想要逐词反转但又不想改变原先的空格,使用正则表达式分割原字符串
import re
astring='I Love Python'
revwords=' '.join(re.split(r'(\s+)',astring)[::-1])
print revwords 结果
Python Love I
检查字符串中是否包含某字符集合中的字符
解决方法:
最简单的方法如下
def containAny(seq,aset):
for c in seq:
if c in aset:
return True
return False seq='abc'
aset='hjkyuia'
print containAny(seq,aset)
也可以使用基于标准库itertools模块的方法,不过本质上使用的相同的方法
import itertools
def containAny(seq,aset):
for item in itertools.ifilter(aset.__contains__,seq):
return True
return False seq='abc'
aset='ghjka'
print containAny(seq,aset)
检查一个字符串是文本还是二进制
解决方法:
还没有精确的算法,不过可以使用一些启发式方法,如果字符串中包含了空值或者有超过30%的高位被置为1或是奇怪的控制码,就认为这段数据是二进制数据
控制大小写(大小写转换)
解决方法:
使用upper和lower方法比较简单,但一般使用更多的是capitalize和title方法
print 'one tWo thrEe'.capitalize()
print 'one tWo thrEe'.title() 结果
One two three
One Two Three
Python文本处理(1)的更多相关文章
- 算是休息了这么长时间吧!准备学习下python文本处理了,哪位大大有好书推荐的说下!
算是休息了这么长时间吧!准备学习下python文本处理了,哪位大大有好书推荐的说下!
- Python 文本解析器
Python 文本解析器 一.课程介绍 本课程讲解一个使用 Python 来解析纯文本生成一个 HTML 页面的小程序. 二.相关技术 Python:一种面向对象.解释型计算机程序设计语言,用它可以做 ...
- python 文本分类
python 文本分类 pyhton 机器学习 待续...
- python文本 maketrans和translate
python文本 maketrans和translate 场景: 过滤字符串的某些字符,我们从例子出发 >>> tb=str.maketrans ('abc','123') & ...
- python文本 字符串逐字符反转以及逐单词反转
python文本 字符串逐字符反转以及逐单词反转 场景: 字符串逐字符反转以及逐单词反转 首先来看字符串逐字符反转,由于python提供了非常有用的切片,所以只需要一句就可以搞定了 >>& ...
- python文本 拼接或合并字符串
python文本 拼接.合并字符串 场景: 拼接.合并字符串 在这个场景中,我们首先想到的当然是使用+或者+=将两个字符串连接起来 >>> a='a' >>> ...
- python文本 去掉字符串前后空格
python文本 去掉字符串前后空格 场景: 去掉字符串前后空格 可以使用strip,lstrip,rstrip方法 >>> a="abc".center (30 ...
- python文本 判断对象里面是否是类字符串
python文本 判断对象里面是否是类字符串 场景: 判断对象里面是否是类字符串 一般立刻会想到使用type()来实现 >>> def isExactlyAString(obj): ...
- python文本 单独处理每个字符的方法汇总
python文本 单独处理字符串每个字符的方法汇总 场景: 用每次处理一个字符的方式处理字符串 方法: 1.使用list(str) >>> a='abcdefg' >&g ...
- python文本 字符串开头或者结尾匹配
python文本 字符串开头或者结尾匹配 场景: 字符串开头或者结尾匹配,一般是使用在匹配文件类型或者url 一般使用startwith或者endwith >>> a='http:/ ...
随机推荐
- 帝国cms7.0调用指定栏目,指定顺序排列
[e:loop={"select * from {$dbtbpre}enewsclass where classid in (82,83,86,87,88,89,90,91,93) orde ...
- IC卡,ID卡,M1卡,射频卡
一般把可读可写,频率是13.56MHz的射频卡称为IC卡,IC卡可以写入数据, 只能读,频率是125KHz的射频卡称为ID卡, M1卡是NXP公司的S50卡的一种叫法,国内的复旦F08,达华的TKS5 ...
- BZOJ 1062
program candy bzoj1062; ; maxm=; maxn=; var n,len,m,i,p,t,l,r,c,d,q:longint; s:..,..maxn,..maxm] of ...
- 重温 Win32 API ----- 截屏指定窗体并打印
朋友说在一个VC++6.0开发的项目中要增加打印窗体的功能,让帮忙写个代码供其调用. 这么老的IDE当然不想碰了,并且也不喜欢MFC笨拙不清晰的封装.所以决定採用纯Win32 API,然后用C++类简 ...
- HDU 2527
题目描述 HDU 2527 分析 霍夫曼编码的应用. 本题没有必要构造一棵完整的霍夫曼树.只需利用霍夫曼编码的原理,每次挑选频率最低的两个元素进行合并 ...
- c基础总结
机器大小端判断: #include <stdio.h> typedef union{ char x; int i; }un; int main() { un tt; tt.i = ; ) ...
- 打包jar类库与使用jar类库
翻译人员: 铁锚 翻译时间: 2013年11月17日 原文链接: Build a Java library by using jar file 代码复用是软件开发中很重要的一个原则.将常用的函数构建 ...
- 深入浅出—JAVA(3)
3.认识变量 变量有两种:primitive主数据类型和引用. 变量有两种口味:清凉的primitive主数据类型与香辣的对象引用.primitive主数据类型用来保存基本类型的值,包括整数.布尔和浮 ...
- java.lang.Math类,方法学习笔记
/**java.lang 包中的Math 类提供有常量 * 并包含有用于执行基本数学运算的 * 方法,如初等指数.对数.平方根 * 用于进行更高级的数学运算.由于 * 在Math 类的方法都是静态的, ...
- 动态弹球的实现 加入了多线程技术--javaSE游戏准备工作
任务描述:实现了动态弹球的功能,对于有弹球功能的SE游戏奠定了基础. package 运用线程技术的小球; import java.awt.*; import java.awt.event.*; im ...