1.Python操作txt文本

文章目录

  • 1.Python读取一个txt文件的内容并将其写入到另一个txt文件
  • 2.Python读取一个未知编码的文件并将其设置为指定编码格式
  • 3.Python实现txt文件中字符串的替换

1.Python读取一个txt文件的内容并将其写入到另一个txt文件

# -*- encoding:gb2312 -*-
import chardetdef read_write_txt(inputpath, outputpath):with open(inputpath,'rb',) as file:     # rb: 以二进制格式打开一个文件用于只读。raw_data = file.read()   # 读出内容用到的是read函数。这个函数的工作原理是依靠一个指针来对内容进行访问的。read方法会用一个指针将文本内容从上到下扫面一遍并且将其输出到内存。扫描完后它的指针是停留在末尾处的。也就是说,如果我们想用read方法访问同一个文件两次,是不可行的。detected_encoding = chardet.detect(raw_data)['encoding']  # 返回文件的编码格式。with open(inputpath, 'r', encoding=detected_encoding) as infile:with open(outputpath, 'w', encoding=detected_encoding) as outfile:# # 第一种:读取所有行# data1 = infile.readlines()# print(data1)# # 输出:['好好学习\n', '天天向上\n', '我是一只鱼\n', '哈哈哈']# 第二种:每行分开读取data2 = []for line in infile:data_line = line.strip("\n")  # 去除首尾换行符data2.append(data_line)print(data2)# 输出:['好好学习', '天天向上', '我是一只鱼', '哈哈哈']# 写入方法for line in data2:# data = '' + '\t'.join(str(i) for i in line) + '\n'  # 用\t隔开data = '' + ''.join(str(i) for i in line) + '\n'  # 用空格隔开outfile.write(data)if __name__ == "__main__":input_file = '1.txt'  # 待读取的文件output_file = 'ansi.txt' # 写入的文件read_write_txt(input_file, output_file)

待读入文件1.txt

image-20230831223220303

写入后的文件ansi.txt

image-20230831223259851

2.Python读取一个未知编码的文件并将其设置为指定编码格式

要在Python中读取一个未知编码的文件并将其设置为另一种编码格式,可以使用chardet模块来检测文件的编码格式,然后使用Python内置的编码库来进行转换。

使用该代码前需要安装chardet和codecs库

pip install chardet
pip install codecs

首先,你可以使用chardet模块来检测文件的编码格式。你可以使用以下代码来完成这个步骤:

# -*- encoding:gb2312 -*-
import chardet
import codecs
def save_as_specified_encoding(input_file, output_file, output_encoding):  #input_file为未知编码文件,output_file为编码后的文件,output_encoding为编码格式with open(input_file,'rb',) as file:     # rb: 以二进制格式打开一个文件用于只读。raw_data = file.read()   # 读出内容用到的是read函数。这个函数的工作原理是依靠一个指针来对内容进行访问的。read方法会用一个指针将文本内容从上到下扫面一遍并且将其输出到内存。扫描完后它的指针是停留在末尾处的。也就是说,如果我们想用read方法访问同一个文件两次,是不可行的。detected_encoding = chardet.detect(raw_data)['encoding']  # 返回文件的编码格式。with codecs.open(input_file,'r',encoding=detected_encoding,errors='ignore') as input_file:content = input_file.read()# codecs.open(filename, mode='r', encoding=None, errors='strict', buffering=1)  使用给定的 mode 打开已编码的文件并返回一个 StreamReaderWriter的实例,提供透明的编码/解码;与内置函数open类似。with codecs.open(output_file,'w',encoding=output_encoding,errors='ignore') as output_file:output_file.write(content) if __name__ == "__main__":input_file = '1.txt'   # 未知编码文件output_file = 'ansi.txt' # 编码后的文件output_encoding = 'ansi' # 设置的编码save_as_specified_encoding(input_file, output_file, output_encoding)

原始文件1.txt

image-20230831223540961

编码后的文件ansi.txt

image-20230831223559481

3.Python实现txt文件中字符串的替换

# -*- encoding:gb2312 -*-
def replace_txt(inputpath, outputpath):# 打开原始文件和目标文件with open(inputpath, 'r') as file:content = file.read()# 替换字符:和:new_content = content.replace(':', ' ')new_content = new_content.replace(':', ' ')# 将替换后的内容写入目标文件with open(outputpath, 'w') as file:file.write(new_content)if __name__ == "__main__":input_path = 'ansi.txt'    # 待处理的txt文件output_path = 'result.txt'    # 替换字符后的txt文件replace_txt(input_path, output_path)

ansi文件(原始文件)

image-20230831223659814

result文件 (替换后的文件)

image-20230831223722894

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/61306.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux命令awk详细用法

简介 awk 是一种强大的文本处理工具,用于在命令行环境下对文件或数据流进行逐行处理和分析。它是由 Alfred Aho、Peter Weinberger 和 Brian Kernighan 在 1977 年开发的,并以他们三人的姓氏命名。awk 在 Unix/Linux 系统中非常常见,也有 Win…

代码随想录算法训练营之JAVA|第四十一天|139. 单词拆分

今天是第 天刷leetcode,立个flag,打卡60天。 算法挑战链接 139. 单词拆分https://leetcode.cn/problems/word-break/ 第一想法 看完之后完全没有想法。 看完代码随想录之后的想法 这是一个完全背包的问题,使用完全背包的解法。 单词就…

leetcode7.整数反转-Java

题目 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。 假设环境不允许存储 64 位整数(有符号或无符号)。 7. 整数反转 - 力扣&a…

栈和队列(优先级队列)

一)删除字符串中所有相邻字符的重复项 1047. 删除字符串中的所有相邻重复项 - 力扣(LeetCode) 算法原理:栈结构模拟,只是需要遍历所有字符串中的字符,一次存放到栈里面即可,也是可以使用数组来模拟一个栈结构的: class…

RabbitMQ从原理到实战—基于Golang【万字详解】

文章目录 前言一、MQ是什么?优势劣势 二、MQ的用途1、应用解耦2、异步加速3、削峰填谷4、消息分发 三、RabbitMQ是什么1、AMQP 协议2、RabbitMQ 包含的要素3、RabbitMQ 基础架构 四、实战1、Simple模式(即最简单的收发模式)2、Work Queues 模型3、Publish/Subscribe…

如何查询Oracle的字符集

如何查询Oracle的字符集 很多人都碰到过因为字符集不同而使数据导入失败的情况。这涉及三方面的字符集,一是oracel server端的字符集,二是oracle client端的字符集;三是dmp文件的字符集。在做数据导入的时候,需要这三个字符集都一致才能正确…

Java学习笔记32——字符缓冲流

字符缓冲流 字符流字符缓冲流字符缓冲流的特有功能 IO流小结字节流字符流 字符流 字符缓冲流 BufferedWriter:将文本写入字符输出流,缓冲字符,以提供单个字符,数组和字符串的高效写入,可以指定缓冲区大小,或者可以接…

C++贪吃蛇(控制台版)

C自学精简实践教程 目录(必读) 目录 主要考察 需求 输入文件 运行效果 实现思路 枚举类型 enum class 启动代码 输入文件data.txt 的内容 参考答案 学生实现的效果 主要考察 模块划分 文本文件读取 UI与业务分离 控制台交互 数据抽象 需求 用户输入字母表示方…

【Flutter】Flutter 使用 video_player 播放视频

【Flutter】Flutter 使用 video_player 播放视频 文章目录 一、前言二、video_player 简介三、安装和配置四、基本使用五、完整示例 六、高级功能七、总结 一、前言 大家好,我是小雨青年,今天我要和大家分享一款非常实用的 Flutter 包——video_player。…

管理类联考——逻辑——形式逻辑——汇总篇——知识点突破——形式逻辑——假言——负/矛盾命题

角度 题干中出现充分条件、必要条件或充分必要条件。提问方式如下: “如果题干信息为真,则以下哪项必然为假(不可能为真、不能成立)?” “以下哪项不符合题干?” “以下哪项能说明题干不成立(最能削弱/反驳题干)?”解题公式: ┐ ( A → B ) = A ∧ ┐ B ┐(A→B)…

学习JAVA打卡第四十七天

日期的格式化 程序可能希望按照某种习惯来输出时间。例如时间的顺序:年/月/日或年/月/日/时/分/秒。可以直接使用String类调用format方法对日期进行格式化。 Format方法 Format方法: format(格式化模式,日期列表) 按照“格式…

git 口令

把当前目录变成 Git 可以管理的仓库: git init 下载一个项目和它的整个代码历史 git clone [url] 切换到 develop 分支: git checkout develop 建立并切换到 new 分支 git checkout -b new 查看所有分支: git branch -a 删除 tese …

微信小程序下载后端返回的文件流

downtest() {let temp {"title": ["排名", "车号", "车队", "车手", "领航", "赛段成绩", "距首车成绩", "距前车差距", "发车时间", "冲刺时间", "赛段…

T8461 ICS TRIPLEX 通过商业编程工具进行离线编辑

T8461 ICS TRIPLEX 通过商业编程工具进行离线编辑 ICS Triplex isa graf及其日本总经销商Nissin高兴地宣布Almega AX-V6焊接机器人获得成功。由国际公认的弧焊电源和工业机器人供应商OTC DAIHEN Corporation制造的Almega机器人以其高速和平稳运动而闻名,可缩短生产…

NameError: name ‘_mysql‘ is not defined

报错信息 Traceback (most recent call last):File "/Users/xuruilong/Desktop/cmabc_back/.enve/lib/python3.9/site-packages/MySQLdb/__init__.py", line 18, in <module>from . import _mysql ImportError: dlopen(/Users/xuruilong/Desktop/cmabc_back/.…

Linux 使用TCP_INFO查询TCP连接的状态信息

Linux 上可以使用TCP_INFO查询TCP连接状态信息包括&#xff1a; 发送方拥塞窗口阈值、发送方缓冲区拥塞窗口、advmss&#xff08;Advertised MSS&#xff09;、通过 ACK 确认的累计字节数等等 struct tcp_info {__u8 tcpi_state;__u8 tcpi_ca_state;__u8 tcpi_retransmits;__…

提高工作效率的一键查询和保存大量快递物流信息的技巧

在如今快速发展的电商行业中&#xff0c;物流服务的准确与便捷是保证顺利交付商品的重要环节。为了方便用户追踪物流&#xff0c;固乔快递查询助手应运而生。这款软件不仅能够快速查询快递单号的物流信息&#xff0c;还具备保存查询结果的功能&#xff0c;方便用户随时查看。 首…

c语言关于指针数组、数组指针、函数指针等的个人理解

指针数组&#xff1a;本身是一个数组&#xff0c;存放的元素类型是指针&#xff0c;例如int*p[10],是一个存放十个int*类型的数据。 数组指针&#xff1a;本身是一个指针&#xff0c;指向的是一个数组&#xff0c;例如int(*p)[10],指向的是一个存放十个int类型的元素的数组。 …

泰迪大数据实训平台产品介绍

大数据产品包括&#xff1a;大数据实训管理平台、大数据开发实训平台、大数据编程实训平台等 大数据实训管理平台 泰迪大数据实训平台从课程管理、资源管理、实训管理等方面出发&#xff0c;主要解决现有实验室无法满足教学需求、传统教学流程和工具低效耗时和内部教学…

【UE5】给模型指定面添加自定义材质

实现步骤 1. 首先我们向UE中导入一个简单的模型&#xff0c;可以看到目前该模型的材质插槽只有一个&#xff0c;当我们修改材质时会使得模型整体的材质全部改变&#xff0c;如果我们只想改变模型的某些面的材质就需要继续做后续操作。 2. 选择建模模式 3. 在模式工具栏中点击…