天天看点

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序列化是很方便的工具,要结合实战多多练习

代码要简洁。