天天看點

06 | Python “黑箱”:輸入與輸出

目錄

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))
           
06 | Python “黑箱”:輸入與輸出

3.json序列化與實戰

json是一種輕量級的資料交換格式,把它了解為兩種黑箱

第一種,輸入一些資訊,輸出一個字元串

第二種,輸入這個字元串,可以輸出 包含原始資訊的python字典

json.dumps()這個函數,接受python的基本資料類型,然後将其序列化為string

面json.load()這個函數,接受一個合法字元串,然後其反序列化為python的基本資料類型。

4.總結

I/O操作需要謹慎,一定要進行充分的錯誤處理,并細心編碼,防止出現編碼漏洞

編碼時,對記憶體占用和磁盤占用要有充分的估計,這樣在出錯時可以更容易找到原因

json序列化是很友善的工具,要結合實戰多多練習

代碼要簡潔。