目錄
1.輸入輸出基礎
2.NLP任務的基本步驟
3.json序列化與實戰
4.總結
1.輸入輸出基礎
input()函數暫停程式運作,同時等待鍵盤輸入;
print()函數接受字元串、數字、字典,清單甚至一些自定義的輸出。
2.NLP任務的基本步驟
2.1 讀取檔案
2.2 去除所有的标點符号和換行符,并把所有大寫變成小寫
2.3 合并相同的詞,統計每個詞出現的頻率,并按照詞頻從大到小排序
2.4 将結果按行輸出到檔案out.txt
import re
# 你不用太關心這個函數
def parse(text):
# 使用正規表達式去除标點符号和換行符
text = re.sub(r'[^\w ]', ' ', text)
# 轉為小寫
text = text.lower()
# 生成所有單詞的清單
word_list = text.split(' ')
# 去除空白單詞
word_list = filter(None, word_list)
# 生成單詞和詞頻的字典
word_cnt = {}
for word in word_list:
if word not in word_cnt:
word_cnt[word] = 0
word_cnt[word] += 1
# 按照詞頻排序
sorted_word_cnt = sorted(word_cnt.items(), key=lambda kv: kv[1], reverse=True)
return sorted_word_cnt
with open('in.txt', 'r') as fin:
text = fin.read()
word_and_freq = parse(text)
with open('out.txt', 'w') as fout:
for word, freq in word_and_freq:
fout.write('{} {}\n'.format(word, freq))
3.json序列化與實戰
json是一種輕量級的資料交換格式,把它了解為兩種黑箱
第一種,輸入一些資訊,輸出一個字元串
第二種,輸入這個字元串,可以輸出 包含原始資訊的python字典
json.dumps()這個函數,接受python的基本資料類型,然後将其序列化為string
面json.load()這個函數,接受一個合法字元串,然後其反序列化為python的基本資料類型。
4.總結
I/O操作需要謹慎,一定要進行充分的錯誤處理,并細心編碼,防止出現編碼漏洞
編碼時,對記憶體占用和磁盤占用要有充分的估計,這樣在出錯時可以更容易找到原因
json序列化是很友善的工具,要結合實戰多多練習
代碼要簡潔。