1. 程式人生 > 實用技巧 >學習心得2020.08.09

學習心得2020.08.09

027集合

對集合賦值時,重複的數,只會在集合中出現一次

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

如何建立一個集合

+一種是直接把一堆元素用花括號括起來
+一種是使用set()工廠函式

>>> set1=set([1,2,3,4,5,5])
>>> set1
{1, 2, 3, 4, 5}

如何訪問集合中的值

+可以使用for把集合中的資料一個個讀取出來
+可以通過in和not in判斷一個元素是否在集合中已經存在

>>> 1 in num2
True
>>> '1' in num2
False

不可變集合frozenset()

>>> num3=frozenset([1,2,3,4,5])
>>> num3.add(0)
Traceback (most recent call last):
  File "<pyshell#19>", line 1, in <module>
    num3.add(0)
AttributeError: 'frozenset' object has no attribute 'add'

028檔案

檔案開啟模式

檔案物件方法


+開啟一個現有的檔案(可讀)

>>> f=open('D:\\那些要用的軟體\\python\\program\\record.txt')
>>> f
<_io.TextIOWrapper name='D:\\那些要用的軟體\\python\\program\\record.txt' mode='r' encoding='cp936'>

+新建一個可寫的檔案

>>> f=open('D:\\那些要用的軟體\\python\\program\\test.txt','w')
>>> f.write('我愛魚C工作室')
7
>>> f.close()

029檔案:一個任務

將檔案(record.txt)中的資料進行分割並按照以下規律儲存起來:
+小甲魚的對話單獨儲存為boy_.txt的檔案(去掉“小甲魚:”)
+小客服的對話單獨儲存為girl_
.txt的檔案(去掉“小客服:”)
+檔案中總共有三段對話,分別儲存為boy_1.txt,girl_1.txt,boy_2.txt,girl_2.txt,boy_3.txt,girl_3.txt共6個檔案(提示:檔案中不同的對話間已經使用“==========”分割)

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

def split_file(file_name):
    f=open('D:\\那些要用的軟體\\python\\program\\record.txt')

    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('record.txt')