前言

在生活、工作中,python一直都是一个好帮手。在python的众多功能中,我觉得文本处理是最常用的。下面是平常使用中的一些总结。环境是python 3.3

0. 基础

在python中,使用str对象来保存字符串。str对象的建立很简单,使用单引号或双引号或3个单引号即可。例如:

s='nice'      #output: nice
s="nice" #output: nice
s="Let's go" #output: Let's go
s='"nice"' #output: "nice"
s=str(1) #output: 1
s='''nice
day''' #output: nice
#output: day

在python中,\n代表换行符,\t代表tab键

在python中,引用str中的某一段的内容很容易。例如:

s=''
s[0] #第一个字符: output: 1
s[-1] #倒数第一个字符: output: 9
s[:2] #前2个字符: output: 12
s[-2:] #后2个字符: output: 89
s[2:-2] #去掉前2个和后2个剩余的字符 output:34567

在python中,判断某一字符串是否在另一个字符串中:

'nice' in 'nice day' #output :True

task 1.  按照某种格式生产字符串

在python中,str对象有一个方法用于实现这种功能,这个方法是:str.format(*args,**kwargs)。例子:

'1+2={0}'.format(1+2)  #{0}是占位符,其中0表示是第一个需要被替换的。output: 1+2=3
'{0}:{1}'.format('nice','day') #{0},{1}是占位符,{0}指第一被替换,替换成nice,{1}第二个被替换,替换成day。output:nice:day

实际用途:

我的手机拍照之后,手机的命名如下:

IMG_20130812_145732.jpg
IMG_20130812_144559.jpg

在电脑中,会根据相片的日期放到不同的文件夹,文件夹命名如下:

--
--

所以说,要对相片的命名进行一个转换,这样才能映射到相应的文件夹转。代码如下:

def getName(name):
return '{0}-{1}-{2}'.format(name[4:8],name[8:10],name[10:12]) getName('IMG_20130812_145732.jpg') #output: 2013-08-12

task 2. 替换字符串中的某一部分

替换有2中方法,一种是使用str对象自带的方法replace(),另一种是使用re模块中sub(0的。例如:

#replace
s='nice day'
s.replace('nice','good') #s本身不改变,但会返回一个字符串:output: good day #sub
import re
s='cat1 cat2 cat3 in the xxx'
re.sub('cat[0-9]','CAT',s) #s本身不改变,但会返回一个字符串:output: CAT CAT CAT in the xxx

对于re模块中的sub,需要了解正则表达式。

task 3. 拆分字符串

Excel可以到处逗号分隔符格式的文件。对于这样的字符串,我们可以把它拆成相应的字段。实现这个功能,主要使用str对象的自带方法split。例如:

s='one,two,three'
s.split(',') #output: ['one', 'two', 'three']

task 4. 合并字符串

除了拆分功能之外,我们可以将拆分好的字段合并成一个字符串。实现这个功能,主要使用str对象自带的方法join。例如:

l=['one', 'two', 'three']
','.join(l) #output: one,two,three

这个功能还可以在this模块中看到。

task 5. 整合

关于字符串的操作有很多。如果仅仅对一两行字符串进行操作,显示不出他的威力。在工作中,有可能会对文档进行处理,有的文档很大,手工的方式不好处理,这时,python就有用武之地。

例如,从数据库中导出一个表table_1的数据,导出来的数据格式如下:

insert into table_1(field1,filed2,field3)
values(value1,value2,value3);
...
insert into table_1(field1,filed2,field3)
values(value1,value2,value3);

数据生成的文件的大小大概为700M。要把这个表的数据导入到另一个数据库的表table_2中,table_1和table_2的表结构相同,仅仅是名字不同。这时,我们可以写一个python脚本,将table_1替换成table_2。例如:

path_in='table1.data'
path_out='table2.data'
f_in=open(path_in)
f_out=open(path_out,'w')
for i in f_in.readlines():
if 'insert into table_1(field1,filed2,field3)' in i:
f_out.write(i.repalce('tabel_1','table_2'))
else:
f_out.write(i)
f_in.close()
f_out.close()

结束语

使用python,让日常工作多了一个工具,多了一个选择。可以将一些重复的工作交给机器做,节省时间,提高效率。

python——常用功能之文本处理的更多相关文章

  1. Python常用功能函数总结系列

    Python常用功能函数系列总结(一) 常用函数一:获取指定文件夹内所有文件 常用函数二:文件合并 常用函数三:将文件按时间划分 常用函数四:数据去重 Python常用功能函数系列总结(二) 常用函数 ...

  2. Python常用功能函数

    Python常用功能函数汇总 1.按行写字符串到文件中 import sys, os, time, json def saveContext(filename,*name): format = '^' ...

  3. Python常用功能函数系列总结(一)

    本节目录 常用函数一:获取指定文件夹内所有文件 常用函数二:文件合并 常用函数三:将文件按时间划分 常用函数四:数据去重 写在前面 写代码也有很长时间了,总觉得应该做点什么有价值的事情,写代码初始阶段 ...

  4. Python常用功能函数系列总结(二)

     本节目录 常用函数一:sel文件转换 常用函数二:refwork文件转换 常用函数三:xml文档解析 常用函数四:文本分词 常用函数一:sel文件转换 sel是种特殊的文件格式,具体应用场景的话可以 ...

  5. Python常用功能函数系列总结(三)

    本节目录 常用函数一:词频统计 常用函数二:word2vec 常用函数三:doc2vec 常用函数四:LDA主题分析 常用函数一:词频统计 # -*- coding: utf-8 -*- " ...

  6. Python常用功能函数系列总结(六)

    本节目录 常用函数一:词云图 常用函数二:关键词清洗 常用函数三:中英文姓名转换  常用函数四:去除文本中的HTML标签和文本清洗 常用函数一:词云图 wordcloud # -*- coding: ...

  7. Python常用功能函数系列总结(五)

    本节目录 常用函数一:向量距离和相似度计算 常用函数二:pagerank 常用函数三:TF-IDF 常用函数四:关键词提取 常用函数一:向量距离和相似度计算 KL距离.JS距离.余弦距离 # -*- ...

  8. python常用功能总结

    经常写python,但很多小的点都记不住,每用必查,总结下来,下次查自己的吧. 1.时间获取: import time print  time.strftime("%Y-%m-%d %H:% ...

  9. python常用功能

    1. 获取昨天日期 引入datetime模块 import datetime def getYesterday(): today = datetime.date.today() #返回当前本地日期 # ...

随机推荐

  1. 使用maven编译Java项目 http://www.tuicool.com/articles/YfIfIrq

    使用maven编译Java项目 时间 2014-07-17 17:42:37  Way Lau's Blog 原文  http://www.waylau.com/build-java-project- ...

  2. YII2项目常用技能知识总结

    1.不通过日志获取AR执行的原生SQL语句和打印变量数据 $query = User::find() ->select(['username'])->where(['id'=>[1, ...

  3. Centos安装Kafka集群

    kafka是LinkedIn开发并开源的一个分布式MQ系统,现在是Apache的一个孵化项目.在它的主页描述kafka为一个高吞吐量的分布式(能 将消息分散到不同的节点上)MQ.在这片博文中,作者简单 ...

  4. 如何催促Apple进行App审核

    为什么提交给 App Store 的应用进入"审核(In Review)"状态后, 仍然可能会等待好多天的时间 ? 不过你也可以通过催促Apple进行App审核来缩短这个时间.以下 ...

  5. Yahoo News Digest(雅虎新闻摘要)APP的推出,未来的seo界又要受伤了

    雅虎在 CES 上公布了旗下首款基于 Summly (天才青少年尼克·阿洛伊西奥(Nick D'Aloisio)开发,此前将其公司以3300万美元出售给雅虎)的新闻 APP - Yahoo News ...

  6. tc 146 2 RectangularGrid(数学推导)

    SRM 146 2 500RectangularGrid Problem Statement Given the width and height of a rectangular grid, ret ...

  7. EasyUI中datagrid控件的使用 设置多行表头(两行或多行)

    EasyUI中的datagrid控件十分强大,能生成各种复杂的报表,现在因为项目需要,需要生成一个表头两行的表,找了一些说明文档,以下用一个实例来说明一下: 第一种方法: $('#divData'). ...

  8. 使用Carthage安装第三方Swift库

    http://blog.crazyphper.com/?p=3661 carthage update

  9. git之远程标签下载(远程分支)

    一般我们发布一个新版本到线上服务器时都会在版本库中打一个标签,这样我们可以随时查看这个打标签的版本,就是说标签其实是版本库中一个快照.git的标签与分支类似,区别是分支是可变的而标签是不可变.接下来我 ...

  10. rem和em,px的使用

    rem是CSS3中新增加的一个单位值,他和em单位一样,都是一个相对单位.不同的是em是相对于元素的父元素的font-size进行计算:rem是相对于根元素html的font-size进行计算.这样一 ...