Python基础笔记-06

51.集合

>>> num={}

>>> type(num)

>>> num2={1,2,3,4,5}

>>> type(num2)

1)唯一性:将重复数据自动清理

>>> num2={1,2,3,4,5,5,4,3,2}

>>> num2

{1, 2, 3, 4, 5}

2)无序性:不支持索引

3)创建集合

【1】直接用花括号

【2】使用set方法:参数需要是一个序列

>>> num3={1,2,3,4,5,6}

>>> num4=set([1,2,3,4,5,5])

>>> num4

{1, 2, 3, 4, 5}

4)如何访问集合中的元素:

【1】利用for访问每一个元素

【2】利用in和not in校验元素是否在集合中

5)增加和删除某个集合中元素

>>> num4.add(6)

>>> num4

{1, 2, 3, 4, 5, 6}

>>> num4.remove(5)

>>> num4

{1, 2, 3, 4, 6}

6)不可变集合:用forzenset方法去生成一个集合即可

>>> num5=frozenset([1,2,3,4,5,6])

>>> num5.add(0)

Traceback (most recent call last):

 File "", line 1, in

   num5.add(0)

AttributeError: 'frozenset' object has no attribute 'add'

52.文件

1)open函数:以下是打开方式的参数说明

r:以只读模式打开(默认)

w:以写入的方式打开文件,会覆盖已存在的文件

x:如果文件已经存在,使用此模式打开将引发异常

a:以写入模式打开,如果文件存在,则再末尾追加写入

b:以二进制模式打开文件

t:以文本模式打开

+:可读写模式(可添加到其他模式中使用)

U:通用换行符支持

53.打开文件

>>> f=open('D:\\record.txt')#注意需要用两个\\

>>> f

<_io.TextIOWrapper name='D:\\record.txt' mode='r' encoding='cp936'>

54.文件操作方法

1)f.close():关闭文件

2)f.read(size=-1):从文件读取size个字符,当未给定size或给定负值的是哦胡,读取剩余的所有字符,然后作为字符串返回

【1】全部读出

>>> f.read()

"小客服:小甲鱼,今天有客户问你有没有女朋友?\n小甲鱼:咦??\n小客服:我跟他说你有女朋友了!\n小甲鱼:。。。。。。\n小客服:她让你分手后考虑以下她!然后我说“您要买个优盘,我就帮您留一下~”\n小甲鱼:然后呢?\n小客服:她买了两个,说发一个货就好~\n小甲鱼:呃。。。。。。你真牛!\n小客服:那是,谁让我是鱼C最可爱的小客服嘛~\n小甲鱼:消磁有人想调戏你我不阻止~\n小客服:滚!!!\n=================================================================================\n小客服:小甲鱼,有个好评很好笑哈。\n小甲鱼:哦?\n小客服:“有了小甲鱼,以后妈妈再也不用担心我的学习了~”\n小甲鱼:哈哈哈,我看到吖,我还发了微博呢~\n小客服:嗯嗯,我看到了你的微博呀~\n小甲鱼:吆西~\n小客服:那个有条回复“左手拿着小甲鱼,右手拿着打火机,哪里不会点哪里,so easy(●'?'●)\n小甲鱼:/(ㄒoㄒ)/~~\n================================================================================================="

【2】读出部分

>>> f.read(5)

'小客服:小'

3)f.readline():以写入模式打开,如果文件存在,则再末尾追加写入

4)f.write(str):将字符串str写入文件

>>> f.write('I love caojin')

Traceback (most recent call last):

 File "", line 1, in

   f.write('I love caojin')

io.UnsupportedOperation: not writable

需要以w或者a的形式打开:

>>> f=open('D:\\test.txt','w')

生成一个文件

>>> f=open('D:\\test.txt','w')

>>> f.write('i love caojin')

13

>>> f.close()#这个时候test中就有这个写入了

5)f.writelines(seq):向文件写入字符串序列seq,seq应该是一个返回字符串的可迭代对象

6)f.seek(offset,from):在文件中移动文件指针,从from(0代表文件起始位置,1代表当前位置,2代表文件末尾)偏移offset个字节

>>> f.seek(42,0)

42

>>> f.readline()

'?\n'

7)f.tell()返回当前在文件中的位置

>>> f=open('D:\\record.txt')

>>> f.read(5)

'小客服:小'

>>> f.tell()

10

8)列表化文件:用list将整个文本拆解成一个个元素的字符串组成的列表

>>> list(f)

['小甲鱼:咦??\n', '小客服:我跟他说你有女朋友了!\n', '小甲鱼:。。。。。。\n', '小客服:她让你分手后考虑以下她!然后我说“您要买个优盘,我就帮您留一下~”\n', '小甲鱼:然后呢?\n', '小客服:她买了两个,说发一个货就好~\n', '小甲鱼:呃。。。。。。你真牛!\n', '小客服:那是,谁让我是鱼C最可爱的小客服嘛~\n', '小甲鱼:消磁有人想调戏你我不阻止~\n', '小客服:滚!!!\n', '=================================================================================\n', '小客服:小甲鱼,有个好评很好笑哈。\n', '小甲鱼:哦?\n', '小客服:“有了小甲鱼,以后妈妈再也不用担心我的学习了~”\n', '小甲鱼:哈哈哈,我看到吖,我还发了微博呢~\n', '小客服:嗯嗯,我看到了你的微博呀~\n', '小甲鱼:吆西~\n', "小客服:那个有条回复“左手拿着小甲鱼,右手拿着打火机,哪里不会点哪里,so easy(●'?'●)\n", '小甲鱼:/(ㄒoㄒ)/~~\n', '=================================================================================================']

读取列表中的每个元素:

【1】方法1:将文本list化后循环读出

>>> f.seek(0,0)

0

>>> lines=list(f)

>>> for each in lines:

   print(each)

【2】方法2:直接迭代f对象

>>> f.seek(0,0)

0

>>> for each in f:

   print(each)

9)将文件record.txt中的数据进行分割,并按照以下规律保存起来:

--小甲鱼的对话单独保存为boy_*.txt的文件(去掉“小甲鱼:”)

--小客服的对话单独保存为girl_*.txt的文件(去掉“小客服:”)

--文件中总共有三段对话,分别保存为boy1_txt,girl_1.txt,boy_2.txt,girl_2.txt,boy_3.txt,girl_3.txt共6个文件(提示:文件中不同的对话间使用”=======“分割)

【1】无函数版本

f=open('D:\\record.txt')  #打开record.txt文件并赋值给f对象

boy=[] #定义一个空boy列表用来容纳每个====号上面小甲鱼说的话

girl=[]#定义一个空girl列表用来容纳每个====号上面小客服说的话

count=1#定义一个变量用来计数第几个===区域以及动态的变动boy_n.txt中的n

for each_line in f: #利用打开的文件对象可以直接被迭代的性质读取每个\n分割开的字符串

   if each_line[:6]!='======':#每次读取一段,就先用切片形式获取前6位看看是不是都是===,如果不是,则证明要么是小甲鱼说的,要么是小客服说的,就要准备进行往boy和girl里增加元素

       #我们这里进行字符串分割

       (role,line_spoken)=each_line.split(':',1)#定义一个元组,role用来承接每句话冒号前的字符串,line_spoken用来承接冒号后的字符串;其中利用字符串的split函数来进行冒号前后的分割

       if role=='小甲鱼':#判断如果冒号前是小甲鱼,要准备把冒号后的字符串放入boy列表中

           boy.append(line_spoken)

       if role=='小客服':#判断如果冒号前是小客服,要准备把毛好后的字符串放入girl列表中

           girl.append(line_spoken)

   else:#for循环一直不停的读取每一句,当出现====的时候进入以下,将之前boy列表和girl列表中的东西都单独的存起来,并且按照boy_n.txt或者girl_n.txt来命名

       #文件的分割保存操作

       file_name_boy='boy'+str(count)+'.txt' #按照count的值定义文件名的字符串

       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)#利用写入一个迭代器写入boy这个列表

       girl_file.writelines(girl)

       boy_file.close()#关闭文件

       girl_file.close()

       boy=[]#清空列表

       girl=[]

       count+=1#递增count

file_name_boy='boy'+str(count)+'.txt'两个=====部分都处理完后,第三次循环只是把内容都放入了list中,但是由于没有检索到===则第三部分文本没有被写入对应的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.close()

【2】函数版本

def save_file(boy,girl,count):  #定义函数,作用是将已经收集好的boy和girl列表写入对应文件中

   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()

def split_file(file_name): #定义拆分函数,将小甲鱼和小客服的话分别拆分放入boy和girl列表中

   f=open(file_name)

   boy=[]

   girl=[]

   count=1

   for each_line in f:

       if each_line[:6]!='======':

           #我们这里进行字符串分割

           (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()

split_file('D:\\record.txt')

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,378评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,356评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,702评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,259评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,263评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,036评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,349评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,979评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,469评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,938评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,059评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,703评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,257评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,262评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,501评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,792评论 2 345

推荐阅读更多精彩内容

  • 基础命令 主要的命令和快捷键 Linux系统命令由三部分组成:cmd + [options]+[operation...
    485b1aca799e阅读 1,086评论 0 0
  • 1.创建文件夹 !/bin/sh mkdir -m 777 "%%1" 2.创建文件 !/bin/sh touch...
    BigJeffWang阅读 10,023评论 3 53
  • 今夜月明如水 沿着月光,我希望能遇见你 在我身处的世界里 你的存在实属未知 今夜月色很美 沿着月光,我看见几千里之...
    我逐光而居阅读 508评论 20 21
  • 学生时代的积累并不能成为一辈子的基础,我们必须学习、再学习,不断充实自己,才能在自我发展和事业前途中不断调整自己的...
    侯静波阅读 251评论 0 1
  • 程序结构 = 数据结构 + 算法 一.数据结构绪论 1.1.数据结构作用 数据结构是一门关于非数值计算的程序设计问...
    e40c669177be阅读 748评论 0 10