每次处理一个字符

解决方法:

创建列表

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. (C#)Windows Shell 外壳编程系列7 - ContextMenu 注册文件右键菜单

    原文 (C#)Windows Shell 外壳编程系列7 - ContextMenu 注册文件右键菜单 (本系列文章由柠檬的(lc_mtt)原创,转载请注明出处,谢谢-) 接上一节:(C#)Windo ...

  2. HDU 1089 A+B for Input-Output Practice (I)

    #include <cstdio> int main() { int a,b; while(scanf("%d%d",&a,&b)!=EOF) prin ...

  3. Zookeeper 在Hadoop中的应用

    Zookeeper 简单介绍 Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目.它主要是用来解决分布式应用中常常遇到的一些数据管理问题,如:统一命名服务.状态同步服务.集 ...

  4. 提高你的Java代码质量吧:使用valueof前必须进行校验

    一.分析 每个枚举都是java.lang.Enum的子类,都可以访问Enum类提供的方法,比如hashCode.name.valueOf等,其中valueOf方法会把一个String类型的名称转变成枚 ...

  5. Java设计模式模式观测(Observer Pattern)

    Observer Pattern 设计模式通常用于.这是一个事件侦听器模型. 该模型有两个作用,一个是Subject, 有一个Observer.Subject 保存多个Observer参考,一旦一个特 ...

  6. UVA 11754 - Code Feat(数论)

    UVA 11754 - Code Feat 题目链接 题意:给定一个c个x, y1,y2,y3..yk形式,前s小的答案满足s % x在集合y1, y2, y3 ... yk中 思路:LRJ大白例题, ...

  7. sql日期转换格式

    Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM Select CONVERT(varchar(100), GETDATE( ...

  8. FreeCodecamp:Repeat a string repeat a string

    要求: 重要的事情说3遍! 重复一个指定的字符串 num次,如果num是一个负数则返回一个空字符串. 结果: repeat("*", 3) 应该返回"***". ...

  9. C#学习日记之数据库连接

    一.webconfig设置和参数解释 在C#中新建一个网站时,webconfig文件中会有一个默认的数据库连接语句,如下 <connectionStrings> <add name= ...

  10. werkzeug中reloader的实现

    在用flask开发时,如果把use_reloader设为True(debug设为True也能实现),那当你修改了app代码或调用环境发生改变时,服务器会自动重启,如下 * Detected chang ...