博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python文本处理
阅读量:6090 次
发布时间:2019-06-20

本文共 4759 字,大约阅读时间需要 15 分钟。

最最关键的一句话,将文件的操作除了使用re模块之外,还要结合字符串的处理!!!

尤其是字符串的处理会更加地方便。

比如:

 

1 with open('file1.txt','w') as output:2     with open('file2.txt','r') as input:3         file2 = input.readlines4         for i in file2:5             str = i6             str_modify = str.修改的东西7             output.write(str_modify)

 

 

 

 

方法 描述

把字符串的第一个字符大写

返回一个原字符串居中,并使用空格填充至长度 width 的新字符串

返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数

以 encoding 指定的编码格式解码 string,如果出错默认报一个 ValueError 的 异 常 , 除非 errors 指 定 的 是 'ignore' 或 者'replace'

以 encoding 指定的编码格式编码 string,如果出错默认报一个ValueError 的异常,除非 errors 指定的是'ignore'或者'replace'

检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False.

把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8。

检测 str 是否包含在 string 中,如果 beg 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-1

格式化字符串

跟find()方法一样,只不过如果str不在 string中会报一个异常.

如果 string 至少有一个字符并且所有字符都是字母或数字则返

回 True,否则返回 False

如果 string 至少有一个字符并且所有字符都是字母则返回 True,

否则返回 False

如果 string 只包含十进制数字则返回 True 否则返回 False.

如果 string 只包含数字则返回 True 否则返回 False.

如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False

如果 string 中只包含数字字符,则返回 True,否则返回 False

如果 string 中只包含空格,则返回 True,否则返回 False.

如果 string 是标题化的(见 title())则返回 True,否则返回 False

如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False

以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串

返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串

转换 string 中所有大写字符为小写.

截掉 string 左边的空格

maketrans() 方法用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。

返回字符串 str 中最大的字母。

返回字符串 str 中最小的字母。

有点像 find()和 split()的结合体,从 str 出现的第一个位置起,把 字 符 串 string 分 成 一 个 3 元 素 的 元 组 (string_pre_str,str,string_post_str),如果 string 中不包含str 则 string_pre_str == string.

把 string 中的 str1 替换成 str2,如果 num 指定,则替换不超过 num 次.

类似于 find()函数,不过是从右边开始查找.

类似于 index(),不过是从右边开始.

返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串

类似于 partition()函数,不过是从右边开始查找

删除 string 字符串末尾的空格.

以 str 为分隔符切片 string,如果 num有指定值,则仅分隔 num 个子字符串

按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。

检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查.

在 string 上执行 lstrip()和 rstrip()

翻转 string 中的大小写

返回"标题化"的 string,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle())

根据 str 给出的表(包含 256 个字符)转换 string 的字符,

要过滤掉的字符放到 del 参数中

转换 string 中的小写字母为大写

返回长度为 width 的字符串,原字符串 string 右对齐,前面填充0

 

0. 基础

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

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

 

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

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

s='123456789's[0]          #第一个字符:     output: 1s[-1]         #倒数第一个字符: output: 9s[:2]         #前2个字符:     output: 12s[-2:]        #后2个字符:     output: 89s[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.jpgIMG_20130812_144559.jpg

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

2013-08-102013-08-12

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

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的。例如:

#replaces='nice day's.replace('nice','good')    #s本身不改变,但会返回一个字符串:output: good day#subimport res='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()

转载于:https://www.cnblogs.com/Ian-learning/p/9503187.html

你可能感兴趣的文章
且谈语音搜索
查看>>
MySQL数据库导入导出常用命令
查看>>
低版本Samba无法挂载
查看>>
Telegraf+Influxdb+Grafana构建监控平台
查看>>
使用excel 展现数据库内容
查看>>
C#方法拓展
查看>>
MySql.Data.dll的版本
查看>>
Linux系统磁盘管理
查看>>
hdu 2191 (多重背包+二进制优化)
查看>>
home.php
查看>>
neo4j---删除关系和节点
查看>>
redis分布式锁redisson
查看>>
什么样的企业可以称之为初创企业?
查看>>
Python爬虫之BeautifulSoup
查看>>
《HTML 5与CSS 3权威指南(第3版·下册)》——第20章 使用选择器在页面中插入内容...
查看>>
如何判断自己适不适合做程序员?这几个特点了解一下
查看>>
newinstance()和new有什么区别
查看>>
android下载封装类
查看>>
[node] 用 node-webkit 开发桌面应用
查看>>
Nginx访问控制和虚拟主机
查看>>