標籤:

黃哥分析如何用python解決特殊文本文件問題

有朋友提問:用vim或python將文件分割成多個txt文件? - Python

有一個字典txt文件,如何將它分成一個一個的txt文件?

===字典txt文件如下===

【游】

@上游:河流的上部。

@遊子:指定詞,生活不定的人。

@游俠:不定的俠客。

【渺】a

@渺茫:微小難見狀。

【渾】

@渾濁:分不清之濁。

===如何變成:===

游.txt 和 渺.txt 和 渾.txt

==游.txt 裡面包含==

【游】

@上游:河流的上部。

@遊子:指定詞,生活不定的人。

@游俠:不定的俠客。

碰到問題,首先不要著急寫代碼,看看黃哥在《如何訓練自己的編程思路 - 黃哥的文章 - 知乎專欄》 中說的,

做習題,要像開發項目的流程一樣(需求->需求分析->設計->編碼->測試->交付等),n拿到一個習題,還沒有進行分析,就匆匆忙忙敲代碼,這個學習方法,是不好的學習方法。n先要分析清楚題目(所謂的需求分析,何為需求分析,請自己搜索),再設計,用那種數據類型(數據結構)n來組織或保存數據,用何種演算法來計算效率最高,用面向過程,還是面向對象的編程範式,還是用函數式編程等等。n設計後,再編寫代碼,最後寫測試。(也可以採用軟體開發過程中的應用方法,測試驅動開發等)n

需求分析:上面文本文件,需要按照字來生成不同的文件,字作為文件名,字下面的解釋作為文件的內容。

設計:

1、整理文件,離不開文件循環讀和寫。

2、可以用生成器輸出每一行。

3、碰到行包含「【」這個字元串時,取字元串切片,作為文件。

下面yield的行,寫這個文件,再次碰到「【」這個字元串時,退出循環。

代碼

#! /usr/bin/pythonn# coding:utf-8nnndef read_from_chinese_dict(path):n 黃哥所寫n with open(path) as f:n for line in f:n yield linennnp = read_from_chinese_dict(字典.txt)ntry:n words = ""n while True:n if 【 in words:n with open(words[3:6]+.txt, w) as f:n while True:n words = p.next()n if 【 in words:n breakn f.write(words)n else:n words = p.next()nnexcept Exception as e:n print(文件處理完畢!)n

推薦閱讀:

TAG:Python |