python3.6—将文件(record.txt)中的数据进行分割并分别保存(附录:文件打开模式,文件对象方法以及字符串使用及注释)
2018-12-30 16:18
651 查看
分割要求:
1.读入record.txt文件中的数据内容
2.将boy的对话单独保存到名为“boy_count.txt”的文件中
3.将girl的对话单独保存到名为“girl_count.txt”的文件中
4.文件中共有三段对话(最后一段无=分割符),分别保存为boy_1.txt,girl_1.txt,boy_2.txt,girl_2.txt,boy_3.txt,girl_3.txt共6个文件(其中,文件中不同对话间使用“=========”分割)
源代码如下:
[code]f=open('F://recode.txt') boy=[] girl=[] count=1 for each_line in f: if each_line[:3] !='===': #判断是否有分隔符 (role,line_spoken)=each_line.split(':',1)#txt文档中的冒号需是英文格式,否则报错 if role=='小明': boy.append(line_spoken) if role=='小红': girl.append(line_spoken) else: file_name_boy='boy_'+str(count)+'.txt' file_name_girl='girl'+str(count)+'.txt' boy_file=open(file_name_boy,'w')#以写入方式打开文件 girl_file=open(file_name_girl,'w') boy_file.writelines(boy)#向文件中写入字符串序列 girl_file.writelines(girl) boy_file.close() girl_file.close() boy=[] girl=[] count+=1 file_name_a = 'boy_' + str(count) + '.txt'#由于第3段后无分隔符,所以单独写入 file_name_b = 'girl_' + str(count) + '.txt' a_file = open(file_name_a, 'w') b_file = open(file_name_b, 'w') a_file.writelines(boy) b_file.writelines(girl) a_file.close() b_file.close() f.close()
优化如下:
[code]#实质是将重叠部分用函数表示: def save_file(boy,girl,count): file_name_boy = 'boy_' + str(count) + '.txt' file_name_girl = 'girl' + str(count) + '.txt' boy_file = open(file_name_boy, 'w') girl_file = open(file_name_girl, 'w') boy_file.writelines(boy) girl_file.writelines(girl) boy_file.close() girl_file.close() f=open('F://recode.txt') boy=[] girl=[] count=1 for each_line in f: if each_line[:3] !='===': (role,line_spoken)=each_line.split(':',1) if role=='小明': boy.append(line_spoken) if role=='小红': girl.append(line_spoken) else: save_file(boy,girl,count) boy=[] girl=[] count+=1 save_file(boy, girl, count)#保存第三部分 f.close()
附录:
文件打开模式 | 执行操作 |
'r' | 以只读方式打开文件(默认) |
'w' | 以写入的方式打开文件,会覆盖已存在的文件 |
'x' | 如果文件已经存在,使用此模式打开将引发异常 |
'a' | 以写入模式打开,如果文件存在,则在末尾追加写入 |
'b' | 以二进制模式打开文件 |
't' | 以文本模式打开(默认) |
'+' | 可读写模式(可添加到其他模式中使用) |
'U' | 通用换行符支持 |
文件对象方法 | 执行操作 |
f.close() | 关闭文件 |
f.read([size]) | 从文件读取size个字符,当未给定size或给定负值的时候,读取剩余的所有字符,然后作为字符串返回 |
f.readline([size]) | 从文件中读取并返回一行(包括行结束符),如果有size有定义则返回size个字符 |
f.write(str) | 将字符串str写入文件 |
f.writelines(seq) | 向文件写入字符串序列seq,seq应该是一个返回字符串的可迭代对象 |
f.seek(offset, from) | 在文件中移动文件指针,从from(0代表文件起始位置,1代表当前位置,2代表文件末尾)偏移offset个字节 |
f.tell() | 返回当前在文件中的位置 |
f.truncate([size=file.tell()]) | 截取文件到size个字节,默认是截取到文件指针当前位置 |
字符串 | 注释 |
capitalize() | 把字符串的第一个字符改为大写 |
casefold() | 把整个字符串的所有字符改为小写 |
center(width) | 将字符串居中,并使用空格填充至长度 width 的新字符串 |
count(sub[, start[, end]]) | 返回 sub 在字符串里边出现的次数,start 和 end 参数表示范围,可选。 |
encode(encoding='utf-8', errors='strict') | 以 encoding 指定的编码格式对字符串进行编码。 |
endswith(sub[, start[,end]]) | 检查字符串是否以 sub 子字符串结束,如果是返回 True,否则返回 False。start 和 end 参数表示范围,可选。 |
expandtabs([tabsize=8]) | 把字符串中的 tab 符号(\t)转换为空格,如不指定参数,默认的空格数是 tabsize=8。 |
find(sub[, start[, end]]) | 检测 sub 是否包含在字符串中,如果有则返回索引值,否则返回 -1,start 和 end 参数表示范围,可选。 |
index(sub[, start[, end]]) | 跟 find 方法一样,不过如果 sub 不在 string 中会产生一个异常。 |
isalnum() | 如果字符串至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False。 |
isalpha() | 如果字符串至少有一个字符并且所有字符都是字母则返回 True,否则返回 False。 |
isdecimal() | 如果字符串只包含十进制数字则返回 True,否则返回 False。 |
isdigit() | 如果字符串只包含数字则返回 True,否则返回 False。 |
islower() | 如果字符串中至少包含一个区分大小写的字符,并且这些字符都是小写,则返回 True,否则返回 False。 |
isnumeric() | 如果字符串中只包含数字字符,则返回 True,否则返回 False。 |
isspace() | 如果字符串中只包含空格,则返回 True,否则返回 False。 |
istitle() | 如果字符串是标题化(所有的单词都是以大写开始,其余字母均小写),则返回 True,否则返回 False。 |
isupper() | 如果字符串中至少包含一个区分大小写的字符,并且这些字符都是大写,则返回 True,否则返回 False。 |
join(sub) | 以字符串作为分隔符,插入到 sub 中所有的字符之间。 |
ljust(width) | 返回一个左对齐的字符串,并使用空格填充至长度为 width 的新字符串。 |
lower() | 转换字符串中所有大写字符为小写。 |
lstrip() | 去掉字符串左边的所有空格 |
partition(sub) | 找到子字符串 sub,把字符串分成一个 3 元组 (pre_sub, sub, fol_sub),如果字符串中不包含 sub 则返回 ('原字符串', '', '') |
replace(old, new[,count]) | 把字符串中的 old 子字符串替换成 new 子字符串,如果 count 指定,则替换不超过 count 次。 |
rfind(sub[, start[, end]]) | 类似于 find() 方法,不过是从右边开始查找。 |
rindex(sub[, start[, end]]) | 类似于 index() 方法,不过是从右边开始。 |
rjust(width) | 返回一个右对齐的字符串,并使用空格填充至长度为 width 的新字符串。 |
rpartition(sub) | 类似于 partition() 方法,不过是从右边开始查找。 |
rstrip() | 删除字符串末尾的空格。 |
split(sep=None,maxsplit) | 不带参数默认是以空格为分隔符切片字符串,如果 maxsplit 参数有设置,则仅分隔 maxsplit 个子字符串,返回切片后的子字符串拼接的列表。 |
splitlines(([keepends])) | 在输出结果里是否去掉换行符,默认为 False,不包含换行符;如果为 True,则保留换行符。。 |
startswith(prefix[, start[, end]]) | 检查字符串是否以 prefix 开头,是则返回 True,否则返回 False。start 和 end 参数可以指定范围检查,可选。 |
strip([chars]) | 删除字符串前边和后边所有的空格,chars 参数可以定制删除的字符,可选。 |
swapcase() | 翻转字符串中的大小写。 |
title() | 返回标题化(所有的单词都是以大写开始,其余字母均小写)的字符串。 |
translate(table) | 根据 table 的规则(可以由 str.maketrans('a', 'b') 定制)转换字符串中的字符。 |
upper() | 转换字符串中的所有小写字符为大写。 |
zfill(width) | 返回长度为 width 的字符串,原字符串右对齐,前边用 0 填充。 |
相关文章推荐
- python基础===文件对象的访问模式,以及计数循环的使用方法
- python 文件的打开模式和文件对象方法
- Python---对html文件内容进行搜索取出特定URL地址字符串,保存成列表,并使用每个url下载图片,并保存到硬盘上,使用bs4,beautifulsoup模块
- Python数据处理-将数据保存为txt、csv等文件格式方法
- Python使用pandas扩展库DataFrame对象的pivot方法对数据进行透视转换
- 报错:对象必须实现 IConvertible;以分隔符进行分割链接concat_ws的使用方法;mysql数据类型转换cast,convert
- Python---对html文件内容进行搜索取出特定URL地址字符串,保存成列表,并使用每个url下载图片,并保存到硬盘上,使用正则re
- 算法第三次作业(1. 排序。对文件 largeW.txt(下载链接)中的数据,编程实现冒泡排序(方法名:bubbleSort) 与 归并排序(mergeSort),把排序后的结果分别保存到largeW
- xpath的使用方法以及python爬取数据的保存
- Python中文件的打开模式和文件对象方法
- 使用文件进行数据存储的模式
- 字符串根据多个字符进行分割的一种方法(使用split而不是regex.split更不是replace)
- Mysql 使用ibd数据文件进行数据恢复 (以及数据移动) 1067的解决办法
- Fortran 从文件中读取数据放入数组中,然后对其进行bubble sort,使用了一些方法防止人为错误
- 文件的打开模式和文件对象方法
- 使用python对PDF文件进行等页数分割
- python保存字符串到文件的方法
- Android中使用SharedPreferences进行数据存储及文件操作模式
- 文件使用二进制模式打开情况下的换行的方法
- 在Python中用split()方法分割字符串的使用介绍