python txt文件切割問題

原文鏈接:https://blog.csdn.net/liulinxs/article/details/99459879

最近看小甲魚視頻,學到了文件切割方面的知識,尤其是split的用法,中間也出現了許多的問題
問題一:文件導入,路徑一定要記得要用雙\或者/,否則會出現:
OSError: [Errno 22] Invalid argument: 'E:\桌面\Python\record\record.txt’
型錯誤。
問題二:文件切割,一定要仔細而又細心檢查自己的txt文件,標點中的‘:’一定要保持一致,換行也要記得
否則會出現
ValueError: not enough values to unpack (expected 2, got 1)
型錯誤。
下面具體內容:
轉載

題目:
將txt文件中的小客服與小甲魚的對話進行切割,並以========爲界限,將其分爲幾個文件,將對話內容存儲與不同的文件,具體的可以去找找原題目。
以下是解題代碼:

f = open('E:\\桌面\\Python\\record\\record1.txt')
#導入文件,可以雙斜槓\\或者反斜槓/

boy = []
girl = []
#創建空列表,後續處理
count = 1
#初始化段落
for each_line in f:
    if each_line[:6] != '======':
        #循環切割。
        (role,words) = each_line.split(':',1)   #split函數切割,兩個參數(切割對象(以什麼來切割),切割成幾部分)
        if role == '小甲魚':
            boy.append(words)
        else:
            girl.append(words)
    else:
        boy_file_name = 'boy_' + str(count) + '.txt' 
        girl_file_name = 'girl_' + str(count) + '.txt'
        #重命名

        boy_file = open(boy_file_name, 'w')
        girl_file = open(girl_file_name, 'w')
        boy_file.writelines(boy)
        girl_file.writelines(girl)
        #創建新文件,並寫入

        boy_file.close()
        girl_file.close()
        #關閉txt文件

        boy = []
        girl = []
        #初始化空列表
        count += 1
        #計數器+1
f.close()
#關閉

可能我們會遇到這種錯誤:ValueError: not enough values to unpack (expected 2, got 1)
我找了很多資料,很多資料提示是txt文件中的‘:’沒有用英文,但其實是源文件txt的內容問題,建議仔細仔細看txt文件內容。

改進後的代碼(函數化)爲

def save_file(name1,name2,count):
    file_name_boy='name1'+str(count)+'.txt' #這裏我想命名爲函數導入過來的名字卻未能實現,很難受
    file_name_girl='mame2'+str(count)+'.txt'
        
    boy_file=open(file_name_boy,'w')
    girl_file=open(file_name_girl,'w')
    
    boy_file.writelines(name1)
    girl_file.writelines(name2)

    boy_file.close()
    girl_file.close()   
    
    
def split_file(file_name):
    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)
            count+=1
            
    f.close()
split_file('record1.txt')

這裏有一個東西想實現卻沒能實現,就是函數名字的傳入更改,再想想吧!

txt文件內容如下:

小客服:小甲魚,今天有客戶問你有沒有女朋友?
小甲魚:咦??
小客服:我跟她說你有女朋友了!
小甲魚:。。。。。。
小客服:她讓你分手後考慮下她!然後我說:"您要買個優盤,我就幫您留意下~"
小甲魚:然後呢?
小客服:她買了兩個,說發一個貨就好~
小甲魚:呃。。。。。。你真牛!
小客服:那是,誰讓我是魚C最可愛小客服嘛~
小甲魚:下次有人想調戲你我不阻止~
小客服:滾!!!
===========================================================
小客服:小甲魚,有個好評很好笑哈。
小甲魚:哦?
小客服:"有了小甲魚,以後媽媽再也不用擔心我的學習了~"
小甲魚:哈哈哈,我看到丫,我還發微博了呢~
小客服:嗯嗯,我看了你的微博丫~
小甲魚:喲西~
小客服:那個有條回覆“左手拿著小甲魚,右手拿著打火機,哪裡不會點哪裡,so easy ^_^”
小甲魚:T_T
===========================================================
小客服:小甲魚,今天一個會員想找你
小甲魚:哦?什麼事?
小客服:他說你一個學生月薪已經超過12k了!!
小甲魚:哪裏的?
小客服:上海的
小甲魚:那正常,哪家公司?
小客服:他沒說呀。
小甲魚:哦
小客服:老大,爲什麼我工資那麼低啊??是時候漲漲工資了!!
小甲魚:啊,你說什麼?我在外邊呢,這裏好吵吖。。。。。。
小客服:滾!!!
===========================================================**

這個文檔中的文件可以分割。。。,但是這個爲什麼不行呢???

小客服:小甲魚,今天有客戶問你有沒有女朋友?
小甲魚:咦??
小客服:我跟她說你有女朋友了!
小甲魚:..
小客服:她讓你分手後考慮下她!然後我說:"您要買個優盤,我就幫您留意下
小甲魚:然後呢?
小客服:她買了兩個,說發一個貨就好
小甲魚:呃。....你真牛!
小客服:那是,誰讓我是魚c最可愛小客服嘛小甲魚:下次有人想調戲你我不阻止
小客服:滾!!!
===========================================================
小客服:小甲魚,有個評論很好笑哈。
小甲魚:哦?
小客服:有了小甲魚,媽媽再也不用擔心我的學習了~
小甲魚:哈哈哈,我看到了,我還發微博了!
小客服:嗯嗯,我看到了你的微博。
小甲魚:喲西~
小客服:那條回覆有“左手拿着小甲魚,右手拿着打火機,哪裏不會點哪裏,so easy!
小甲魚:T_T
==========================================================
小客服:小甲魚,今天一個會員找你
小甲魚:哦,什麼事?
小客服:他說你一個學生月薪都超過12k了!!!
小甲魚:那裏的?
小客服:上海的。
小甲魚:那正常,那家公司呀?
小客服,他沒說呀。
小甲魚:哦
小客服:老大,爲什麼我工資那麼低呀???是時候漲工資了!!
小甲魚:啊,你說什麼呀?我在外邊呢,這裏好吵呀。。。。。
小客服:滾!!!==========================================================

你們可以仔細看看哪裏有問題,哈哈哈,反正我看到了,嘿嘿嘿
轉載於https://blog.csdn.net/liulinxs/article/details/99459879

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章