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:/ ...
随机推荐
- (C#)Windows Shell 外壳编程系列7 - ContextMenu 注册文件右键菜单
原文 (C#)Windows Shell 外壳编程系列7 - ContextMenu 注册文件右键菜单 (本系列文章由柠檬的(lc_mtt)原创,转载请注明出处,谢谢-) 接上一节:(C#)Windo ...
- HDU 1089 A+B for Input-Output Practice (I)
#include <cstdio> int main() { int a,b; while(scanf("%d%d",&a,&b)!=EOF) prin ...
- Zookeeper 在Hadoop中的应用
Zookeeper 简单介绍 Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目.它主要是用来解决分布式应用中常常遇到的一些数据管理问题,如:统一命名服务.状态同步服务.集 ...
- 提高你的Java代码质量吧:使用valueof前必须进行校验
一.分析 每个枚举都是java.lang.Enum的子类,都可以访问Enum类提供的方法,比如hashCode.name.valueOf等,其中valueOf方法会把一个String类型的名称转变成枚 ...
- Java设计模式模式观测(Observer Pattern)
Observer Pattern 设计模式通常用于.这是一个事件侦听器模型. 该模型有两个作用,一个是Subject, 有一个Observer.Subject 保存多个Observer参考,一旦一个特 ...
- UVA 11754 - Code Feat(数论)
UVA 11754 - Code Feat 题目链接 题意:给定一个c个x, y1,y2,y3..yk形式,前s小的答案满足s % x在集合y1, y2, y3 ... yk中 思路:LRJ大白例题, ...
- sql日期转换格式
Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM Select CONVERT(varchar(100), GETDATE( ...
- FreeCodecamp:Repeat a string repeat a string
要求: 重要的事情说3遍! 重复一个指定的字符串 num次,如果num是一个负数则返回一个空字符串. 结果: repeat("*", 3) 应该返回"***". ...
- C#学习日记之数据库连接
一.webconfig设置和参数解释 在C#中新建一个网站时,webconfig文件中会有一个默认的数据库连接语句,如下 <connectionStrings> <add name= ...
- werkzeug中reloader的实现
在用flask开发时,如果把use_reloader设为True(debug设为True也能实现),那当你修改了app代码或调用环境发生改变时,服务器会自动重启,如下 * Detected chang ...