Python核心技术与实战学习笔记(四):python黑箱:输入与输出

本文介绍了Python的输入输出基础,包括input()函数和强制类型转换,强调了错误处理的重要性。接着讲解了文件输入输出,以词频统计为例展示了读写文件的操作,并推荐使用with语句处理文件。最后提到了JSON序列化,解释了如何将数据转换为JSON字符串以及反序列化,并指出在实际应用中处理文件的JSON编码和解码。文章提醒开发者注意边界条件和异常处理,以确保程序稳定性。
摘要由CSDN通过智能技术生成

4.1 输入输出基础

最简单的输入输出:

  • age = input(“how old are you?”) :特别需要注意input()函数的用法的是,输入的变量最终都存储为字符串类型
  • print()
a = input()
1
b = input()
2

print('a + b = {}'.format(a + b))
########## 输出 ##############
a + b = 12        # 注意是字符串12而不是整数3
print('type of a is {}, type of b is {}'.format(type(a), type(b)))
########## 输出 ##############
type of a is <class 'str'>, type of b is <class 'str'>
print('a + b = {}'.format(int(a) + int(b)))
########## 输出 ##############
a + b = 3

强制转换的注意事项

上面的代码中用到了强制类型转换,在Python中:

  • 把 str 强制转换为 int 要用 int(),转为浮点数要用float()
  • 在生产环境使用强制类型转换时,要记得使用错误和异常处理(try…except)

Python中的int类型没有最大限制(相比之下,C++的int最大为2147483647,超过这个数字就会产生溢出),但对float类型有精度限制。这些特点除了在一些算法竞赛中要注意,在生产环境中也要时刻堤防,避免因边界问题不清而引起bug甚至0day(危重安全漏洞)

有相当比例的安全漏洞,都来自于随意的I/O操作

4.2 文件输入输出

生产级别的Python代码,大部分I/O则来自文件,网络,其他进程的消息

以下是一个简单的NLP任务:读取文件中的文本,统计词频将统计结果存储在新建文件中
在这里插入图片描述

NLP小任务——词频统计:

import re
def parse(text, word_count_dic):
    
    # 大写转小写
    text = text.lower()
    
    # 构建这一行字符串的单词列表
    word_list = re.findall(r'\w+',text)
    
    # 统计出现的各个单词以及的次数,存于字典结构中
    for word in word_list:
        word_count_dic[word] = word_count_dic.get(word, 0) + 1  # 这里还可以使用defaultdict字典
 
    return word_count_dic

fin_path = 'G:\Python_Projects\I have a dream.txt'
fout_path = 'G:\Python_Projects\I have a dream parse.txt'

with
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值