每次处理一个字符

解决方法:

创建列表

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)的更多相关文章

  1. 算是休息了这么长时间吧!准备学习下python文本处理了,哪位大大有好书推荐的说下!

    算是休息了这么长时间吧!准备学习下python文本处理了,哪位大大有好书推荐的说下!

  2. Python 文本解析器

    Python 文本解析器 一.课程介绍 本课程讲解一个使用 Python 来解析纯文本生成一个 HTML 页面的小程序. 二.相关技术 Python:一种面向对象.解释型计算机程序设计语言,用它可以做 ...

  3. python 文本分类

    python 文本分类 pyhton 机器学习 待续...

  4. python文本 maketrans和translate

    python文本 maketrans和translate 场景: 过滤字符串的某些字符,我们从例子出发 >>> tb=str.maketrans ('abc','123')    & ...

  5. python文本 字符串逐字符反转以及逐单词反转

    python文本 字符串逐字符反转以及逐单词反转 场景: 字符串逐字符反转以及逐单词反转 首先来看字符串逐字符反转,由于python提供了非常有用的切片,所以只需要一句就可以搞定了 >>& ...

  6. python文本 拼接或合并字符串

    python文本 拼接.合并字符串 场景: 拼接.合并字符串 在这个场景中,我们首先想到的当然是使用+或者+=将两个字符串连接起来 >>> a='a'    >>> ...

  7. python文本 去掉字符串前后空格

    python文本 去掉字符串前后空格 场景: 去掉字符串前后空格 可以使用strip,lstrip,rstrip方法 >>> a="abc".center (30 ...

  8. python文本 判断对象里面是否是类字符串

    python文本 判断对象里面是否是类字符串 场景: 判断对象里面是否是类字符串 一般立刻会想到使用type()来实现 >>> def isExactlyAString(obj):  ...

  9. python文本 单独处理每个字符的方法汇总

    python文本 单独处理字符串每个字符的方法汇总 场景: 用每次处理一个字符的方式处理字符串 方法: 1.使用list(str) >>> a='abcdefg'    >&g ...

  10. python文本 字符串开头或者结尾匹配

    python文本 字符串开头或者结尾匹配 场景: 字符串开头或者结尾匹配,一般是使用在匹配文件类型或者url 一般使用startwith或者endwith >>> a='http:/ ...

随机推荐

  1. 帝国cms修改[!--show.listpage--]分页页码所生成的html标签

    在使用帝国cms系统时,我们用[!--show.page--]和[!--show.listpage--]来生成页码 其中[!--show.listpage--]所生成的html页码代码为: <a ...

  2. IC卡,ID卡,M1卡,射频卡

    一般把可读可写,频率是13.56MHz的射频卡称为IC卡,IC卡可以写入数据, 只能读,频率是125KHz的射频卡称为ID卡, M1卡是NXP公司的S50卡的一种叫法,国内的复旦F08,达华的TKS5 ...

  3. 在IT公司,project manager 基本上和秘书,助理什么的差不多

    我感觉非常有道理,所以我不做Leader,哈哈哈

  4. 网络爬虫返回json处理数据

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于JavaScript(Standard ECMA-262 3rd Edition - Decembe ...

  5. web.xml中servlet, bean, filter, listenr 加载顺序汇总

    最终得出结果:先 listener >> filter >> servlet >> spring 所以,如果过滤器中要使用到 bean,可以将spring 的加载 ...

  6. Android 进程和线程模型

    Android进程模型 在安装Android应用程序的时候,Android会为每个程序分配一个Linux用户ID,并设置相应的权限,这样其它应用程序就不能访问此应用程序所拥有的数据和资源了. 在 Li ...

  7. SqlServer2012导入Oracle详细案例

    第一次使用SqlServer2012,界面和VS2012风格一致了,Great! 进入正题,这篇博文主要写一下自己亲测的一个案例,使用SqlServer2012的“导入和导出数据”功能向Oracle1 ...

  8. rpc的学习

    rpc(Remote process call 即远程过程调用)是一种请求-相应的协议, 主要使用于C/S架构中,使得分布式系统成为可能.由客户端发起请求,服务端调用各种参数处理请求,当服务器在处理请 ...

  9. float存储方式编程验证

    取出float在内存中的编码: void printFloatAsBinary(float f){ // 二进制的位数 const int bits = sizeof(f) * 8; // 将floa ...

  10. Maven模块聚合与继承

    聚合 假如有account-email和account-persist两个模块,我们想要一次构建这两个项目,这时须要用到聚合. 聚合模块 package值必须为pom 必须有元素modules mod ...