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:/ ...
随机推荐
- Core 发布至Linux
ASP.NET Core 发布至Linux生产环境 Ubuntu 系统 ASP.NET Core 发布至Linux生产环境 Ubuntu 系统,之前跟大家讲解了 dotnet publish 发布,而 ...
- 记NOIP分数出来前
咩~成绩还没有出来呢!但是拿到了每个人的程序,还有一堆民间的数据.我测了好多不同的数据,基本上D1T1,D2T1,D2T2的都是暴力解决掉的,没有什么问题,唯一就是D1T2的link那一题,写的时候2 ...
- android sdk 下载缓慢的问题
原文地址:http://www.oschina.net/question/265039_173445#tags_nav 1.在Android SDK Manager Setting 窗口设置 HTTP ...
- poj 1836 Alignment(线性dp)
题目链接:http://poj.org/problem?id=1836 思路分析:假设数组为A[0, 1, …, n],求在数组中最少去掉几个数字,构成的新数组B[0, 1, …, m]满足条件B[0 ...
- Servlet、SPringMVC、Struts等防止表单反复提交的多种处理方法
第一种处理方法(非拦截器): 眼下这样的方法不建议,由于JSP规范不建议写JAVA代码.这样的能够方便另外一种处理方法的理解,另外一种方法引入拦截器的思想,原理基本一样,模仿Struts的Token机 ...
- adb shell top
PID:进程在系统中的ID CPU% - 当前瞬时所以使用CPU占用率 #THR - 程序当前所用的线程数 UID - 运行当前进程的用户id Name - 程序名称android.process.m ...
- 如果让莎士比亚、海明威编写JavaScript代码
本文作者Angus Croll是Twitter工程师.JavaScript迷.文学迷,并且非常喜欢作家海明威.他在梦中"梦见"一些名人编写JavaScript代码,不同的作家呈现出 ...
- linux kernel中timer的使用
linux kernel中timer的使用 http://blog.csdn.net/njuitjf/article/details/16888821 在kernel中如果想周期性的干些什么事情,或者 ...
- OD调试篇1—Hello
OD调试篇1—Hello 要求:通过OD将程序的标题“I love fishc.com”改为“I love you” 一.找到程序的标题“I love fishc.com” 1.把程序拖到OD运行出现 ...
- 我用的比较少的CSS选择器
选择器 描述 [attribute] 用于选取带有指定属性的元素. [attribute=value] 用于选取带有指定属性和值的元素. [attribute~=value] 用于选取属性值中包含指定 ...