广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python基础:输入与输出(I/O)
  • 229
分享到

Python基础:输入与输出(I/O)

基础Python 2023-01-31 00:01:30 229人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

来做一个NLP任务   步骤为:     1.读取文件;     2.去除所有标点符号和换行符,并把所有大写变成小写;     3.合并相同的词,统计每个词出现的频率,并按照词频从大到小排序;     4.将结果按行输出到文件 out.

来做一个NLP任务

  步骤为:
    1.读取文件;
    2.去除所有标点符号和换行符,并把所有大写变成小写;
    3.合并相同的词,统计每个词出现的频率,并按照词频从大到小排序
    4.将结果按行输出到文件 out.txt。
  代码:
import re
import os,sys
# 你不用太关心这个函数
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
      print(word_cnt.items())
  # 按照词频排序
  sorted_word_cnt = sorted(word_cnt.items(), key=lambda kv: kv[1], reverse=True)
  return sorted_word_cnt

inFile = 'in.txt'
if not os.path.exists(inFile):
  print(f'file {inFile} not exist')
  sys.exit()
with open(inFile, 'r') as fin:
  text = fin.read()

word_and_freq = parse(text)

outFile = 'out.txt'
with open(outFile, 'w') as fout:
  for word, freq in word_and_freq:
    try:
      fout.write('{} {}\n'.fORMat(word, freq))
    except Exception as ex:
      print(f"error in wirte {outFile},error msg:{ex}")
  假如文件非常大,一次性读取可能会导致内存崩溃,那么可以用一行一行读取的方法来实现:
from collections import defaultdict
import re,sys,os

inFile = 'in.txt'
if not os.path.exists(inFile):
  print(f'file {inFile} not exist')
  sys.exit()
f = open(inFile, mode="r", encoding="utf-8")
word_cnt = defaultdict(int) #defaultdict类的初始化函数接受一个类型作为参数,当所访问的键不存在的时候,可以实例化一个值作为默认值

for line in f: #逐行读取
  line =re.sub(r'[^\w ]', '', line) #使用正则表达式去除标点符号和换行符
  for word in filter(None, line.split(' ')): #按空格把单词分组,并把空白单词去掉
    word_cnt[word] += 1

outFile = 'out.txt'
with open(outFile,'w') as fout:
  for word, freq in sorted(word_cnt.items(), key=lambda kv: kv[1], reverse=True):
    try:
      fout.write(f'{word} {freq}\n')
    except Exception as ex:
      print(f"error in wirte {outFile},error msg:{ex}")

  I/O需谨慎,所有I/O操作都应该进行错误处理,以防编码漏洞。

JSON 序列化与反序列化

  json.dumps() 这个函数,接受 python 的基本数据类型,然后将其序列化为 string;

  json.loads() 这个函数,接受一个合法字符串,然后将其反序列化为 Python 的基本数据类型。

  同样的,Json序列化与反序列化时也要注意做错误处理,比如json.loads('123.2')会返回一个float类型。因此反序列化后需要判断是否期望的类型:
original_params = json.loads(params_str)
t = type(original_params)
if t is not dict:
    print(f'is {t} not dict')

  json.dumps() 与json.loads()例子:

import json,sys
params = {
'symbol': '123456',
'type': 'limit',
'price': 123.4,
'amount': 23
}
try:
    params_str = json.dumps(params)
except Exception as ex:
    print(f'error on dumps error msg:{ex}')
    sys.exit()

print('after json serialization') 
print('type of params_str = {}, params_str = {}'.format(type(params_str), params)) 
#after json serialization
#type of params_str = <class 'str'>, params_str = {'symbol': '123456', 'type': 'limit', 'price': 123.4, 'amount': 23}

original_params = json.loads(params_str)
t = type(original_params)
if t is not dict:
    print(f'is {t} not dict')
print('after json deserialization')
print('type of original_params = {}, original_params = {}'.format(type(original_params), original_params))
#after json deserialization 
#type of original_params = <class 'dict'>, original_params = {'symbol': '123456', 'type': 'limit', 'price': 123.4, 'amount': 23}

 

 

参考资料:

极客时间《Python核心技术与实战》

--结束END--

本文标题: Python基础:输入与输出(I/O)

本文链接: https://www.lsjlt.com/news/182422.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python基础:输入与输出(I/O)
    来做一个NLP任务   步骤为:     1.读取文件;     2.去除所有标点符号和换行符,并把所有大写变成小写;     3.合并相同的词,统计每个词出现的频率,并按照词频从大到小排序;     4.将结果按行输出到文件 out....
    99+
    2023-01-31
    基础 Python
  • python基础之输入与输出
    目录Python的输入与输出输出输入总结Python的输入与输出 输出 通过字符串格式化优化不必要的重复输出 %占位符来优化 # 输出 % 占位符,实现字符串可视化输出 na...
    99+
    2022-11-12
  • Python编程基础之输入与输出
    目录一、IPO模型 二、基本输入 - input()函数1、函数格式2、参数说明3、实例演示(1)接收字符串数据(2)接收整型数据(3)接收浮点型数据(4)容易出现的错误三、基本输出...
    99+
    2022-11-12
  • Python基础之输入输出
    1.背景 Python 是一门易于学习、功能强大的编程语言。它提供了高效的高级数据结构,还能简单有效地面向对象编程。Python 优雅的语法和动态类型以及解释型语言的本质,使它成为多数平台上写脚本和快...
    99+
    2023-09-30
    python 算法 开发语言 数据结构
  • Java中I/O输入输出的深入讲解
    目录前言一、流概述二、输入/输出流1、输入流2、输出流三、File类1、文件的创建与删除1、File(String pathname)2、File(String parent,Str...
    99+
    2022-11-13
    javaio输入输出 I/O输入输出 java的io是什么
  • 【Java基础:输入输出类】:Scanner类(输入输出)
    图片来自互联网 文章目录 前言         一、Scanner是什么?         二、Scanner 的使用                  1.next()   获取字符的使用:          2...
    99+
    2023-10-10
    开发语言 java eclipse intellij-idea
  • Python基础之输入,输出与高阶赋值详解
    目录1. 输入、输出与注释1.1 获取用户输入1.2 格式化输出1.2.1 基本方法1.2.2 format 格式化函数1.3 注释2. 高阶赋值语句2.1 赋值运算符2.2 并行赋...
    99+
    2022-11-12
  • python输入与输出
    python输出 python3中的输出 python3中的输出使用函数print(),示例如下: >>> print('hello kitty') print()也可接受多个参数,使用逗号隔开: >>>...
    99+
    2023-01-31
    python
  • Python的输入与输出
    ✅作者简介:CSDN内容合伙人、阿里云专家博主、51CTO专家博主、新星计划第三季python赛道Top1🏆 📃个人主页:hacker707的csdn博客 ...
    99+
    2023-10-08
    python 输入输出
  • pandas基础 Series与Dataframe与numpy对二进制文件输入输出
    目录SeriesPython numpy对二进制文件输入输出Series series是一种一维的数组型对象,它包含了一个值序列和一个数据标签 import pandas as pd...
    99+
    2022-11-11
  • C++基础学习之输入输出流详解
    目录1. 输入输出流2. 文件输入输出3. 格式化输入输出4. 字符串输入输出5. 空格处理C++是一种广泛应用的编程语言,其输入和输出是程序所必须的基本操作之一。输入是指从外部获取...
    99+
    2023-05-17
    C++输入输出流 C++输入流 C++输出流
  • #5 Python变量与输入输出
    前言 学习一门编程语言,最基本的无非不过学习其变量规则、条件语句、循环语句和函数,接下来的几节将开始记录这些基本的语法,本节主要记录变量规则! 一、Python输入输出 在说Python变量之前,先补充一下Python的输入和输出语句,在...
    99+
    2023-01-30
    变量 输入输出 Python
  • Python基础之矩阵输入
    经常在尝试python一些函数功能时想随便输入一个矩阵感觉怪麻烦……python是拿list表示数组的,毕竟不是矩阵(Matrix)实验室(Laboratory)嘛2333 Python直接复制格式标准的数据是可以识别成list的...
    99+
    2023-01-31
    矩阵 基础 Python
  • 输入与输出函数—— 关于python 输入和输出你知道多少?
    输入与输出函数—— 关于python 输入和输出你知道多少? 文章目录 输入与输出函数—— 关于python 输入和输出你知道多少?1️⃣输入 print()🍹基本语法...
    99+
    2023-09-04
    python 开发语言
  • Python的基础语法和输入输出函数你都了解吗
    目录基础语法1. 注释:2.行和缩进3.标识符和关键字保留字:1.常用数据和数据类型2.类型操作输入和输出函数1.输出函数2.输入函数总结基础语法 1. 注释: 注释在解释器中是不会...
    99+
    2022-11-13
  • python入门基础之用户输入与模块初认识
    一、注释 当前行注释:# 被注释内容 多行注释:""" 被注释内容 """ 二、用户输入 #!/usr/bin/env python #_*_coding:utf-8_*_ #name = raw_in...
    99+
    2022-06-04
    模块 入门 基础
  • C++入门基础之命名空间、输入输出和缺省参数
    目录一.命名空间(1)命名空间的定义(2)命名空间的使用(3)全局域 二.输入&&输出(1) cout(2)cin(3)cin cout自动是识别类型&nb...
    99+
    2023-01-10
    c++缺省参数值 c++ 命名空间 c++ 输入输出
  • 一起来了解python的基本输入和输出
    目录Python基本输入和输出1.input输入函数2.print输出函数2.1print输出颜色控制(终端有效)总结Python基本输入和输出 1.input输入函数 input函...
    99+
    2022-11-13
  • python基本文件操作(文件输入和输出
    文件输入输出中常用的文件对象方法:open : 返回一个新的文件对象,调用该对象的上的方法可对文件进行任何操作readline: 读取一行数据包括结尾的换行符在内write: 将数据写入文件中close: 关闭文件对象; 举例:读取E盘中的...
    99+
    2023-01-31
    文件 操作 python
  • python的基本输入和输出方法有哪些
    今天小编给大家分享一下python的基本输入和输出方法有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Python基本输...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作