基于Python实现简易文档格式转换器
作者:Python集中营 发布时间:2021-12-12 14:32:31
标签:Python,文档,格式转换
最近看到市场上各种的文档格式转换软件,要么是收费、要么是有大量的广告。于是学习了一下 PyQt5 的页面操作,再加上了解 pandas 的使用方法。所以,萌生了想法写一个简单的文档格式转换应用。或者有更好的实现方式请在评论区留言,大家一起讨论学习~
需求分析
1、将 .txt 的文本文档转换成 csv 格式文件。
2、将 .txt 的文本文档转换成 excel 格式文件。
开发环境
1、运行环境:python-3.8.x版本
2、操作系统:windows7 系统
3、开发工具:pycharm 2021.1 版本
引用模块
PyQt5 引用的相关模块
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
系统文件操作引用的模块
import sys
import os
import pandas as pd
UI界面代码块
设置桌面应用标题
self.setWindowTitle('文本格式转换器')
grid = QGridLayout()
创建一个 QTextEdit(),将应用中文档格式转换中需要注意的地方以文本的形式进行说明并将其设置为只读模式。
'''文档转换说明'''
self.text_current_label = QTextEdit()
self.text_current_label.setReadOnly(True)
self.text_current_label.setText(''
'1、txt 文本格式说明:每行数据使用英文状态下的逗号","隔开,txt '
'格式的文档是按照每行数据进行读取的,所以需要按照规则进行换行保证每行的数据格式一致。\n'
'每行数据举例:zhangsan,21,男,98,优秀\n\n'
'2、excel 格式的文档需要事先创建好.xlsx 的空文件(本应用不会自动创建新文件,后期需要可以加上)。\n\n'
'3、csv 格式的文档需要事先创建好 .csv 的空文件(本应用不会自动创建新文件,后期需要可以加上)。')
self.text_current_label.setStyleSheet('color:blue')
self.text_current_label.setMaximumHeight(90)
读取 .txt 的文本文档文件的按钮,并将文档地址设置到输入框中的操作。因此,需要创建一个文件读取按钮以及只读模式的输入框。
'''.txt 文件'''
self.txt_file_path = QLineEdit()
self.txt_file_path.setReadOnly(True)
self.txt_file_path_btn = QPushButton()
self.txt_file_path_btn.setText('获取.txt文件')
self.txt_file_path_btn.clicked.connect(self.txt_file_path_btn_click)
同样的,分别做 csv 文件和 excel 文件的读取页面设计。
'''.xlsx 文件'''
self.xlsx_file_path = QLineEdit()
self.xlsx_file_path.setReadOnly(True)
self.xlsx_file_path_btn = QPushButton()
self.xlsx_file_path_btn.setText('获取.xlsx文件')
self.xlsx_file_path_btn.clicked.connect(self.xlsx_file_path_btn_click)
'''.csv 文件'''
self.csv_file_path = QLineEdit()
self.csv_file_path.setReadOnly(True)
self.csv_file_path_btn = QPushButton()
self.csv_file_path_btn.setText('获取.csv文件')
self.csv_file_path_btn.clicked.connect(self.csv_file_path_btn_click)
最后,加上文件转换的可选项设计,再添加开始转换的按钮提供应用转换的开始执行的效果。
'''.xlsx .csv 选项 转换按钮'''
self.xlsx_checkbox = QCheckBox()
self.xlsx_checkbox.setText('.xlsx')
self.csv_checkbox = QCheckBox()
self.csv_checkbox.setText('.csv')
self.trans_btn = QPushButton()
self.trans_btn.setText('开始转换')
self.trans_btn.setStyleSheet('color:green')
self.trans_btn.clicked.connect(self.trans_btn_click)
主要的UI界面相关的设计就是上述这些
格式转换主要代码块
首先,将 .txt 文本文档的文件读取出来,并以 DataFrame 的数据格式存放到变量供后面的格式转换使用。
def read_txt_for_dataframe(self):
self.columns = []
if self.data_frame_columns_text.text().strip() != '' and self.data_frame_columns_text.text().find(',') != -1:
self.columns = self.data_frame_columns_text.text().split(',')
self.data_frame = pd.read_csv(self.txt_file_path.text(), encoding='utf-8', index_col=0, names=self.columns)
print(self.data_frame)
elif self.data_frame_columns_text.text().strip() != '' and self.data_frame_columns_text.text().find(',') == -1:
self.warn_dialog_msg('请正确填写数据列!')
else:
self.data_frame = pd.read_csv(self.txt_file_path.text(), encoding='utf-8', index_col=0)
print(self.data_frame)
使用 pandas 模块提供的 csv 文件保存函数进行 .csv 格式的文件保存。
def dataframe_to_csv(self):
self.data_frame.to_csv(self.csv_file_path.text())
使用 pandas 模块提供的 excel 文件保存函数进行 .xlsx 格式的文件保存。
def dataframe_to_xlsx(self):
self.data_frame.to_excel(self.xlsx_file_path.text())
效果展示
界面风格比较简单,看一下整个应用界面设计是这样的。
来源:https://www.cnblogs.com/lwsbc/p/15725910.html


猜你喜欢
- pyinstaller打包问题简单介绍一下pyinstaller常用的参数:可选参数示例说明-Fpyinstaller -F demo.py
- CASE 表达式分为简单表达式与搜索表达式,其中搜索表达式可以覆盖简单表达式的全部能力,我也建议只写搜索表达式,而不要写简单表达式。简单表达
- python 实现删除文件或文件夹  
- 两种写法。如图,4种重合情况和2种不重合情况。第一种写法:-- 时间段 a,b SELECT * FROM table WHER
- 下载:pip install apschedulerpip install django-apscheduler将 django-apsch
- 1 无参数情况配置URL及其视图如下:(r'^hello/$', hello)def hello(request): &nb
- 此文章主要介绍的是MySQL数据库的字符(串)的实际操作步骤,我们大家都知道MySQL数据库的字符(串)在实际操作是经常被用到了,所以你对其
- K线图概念股市及期货市bai场中的K线图的du画法包含四个zhi数据,即开盘dao价、最高价、最低价zhuan、收盘价,所有的shuk线都是
- 1.单继承父类也叫基类子类也叫派生类如下所示,继承的关系:继承的书写格式:class 子类(父类):方法实例:class Animal: &
- 时至期末,补习信息安全概论作业。恰巧遇古典密码学算法中的playfair算法和hill算法,用javascript语言实现起来是在有趣,边查
- 目录urllib子模块request模块function request.urlopen()class request.Requestpyt
- 不使用int()函数的情况下把字符串转换为数字,如把字符串"12345"转换为数字12345。方法一:利用str函数既然
- Crawler全名是DomCrawler,是Symfony框架的组件。令人发指的是DomCrawler的没有中文文档,Symfony也没有翻
- 这篇文章主要介绍了python matplotlib拟合直线的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价
- 问题作为一个负责几个服务器的数据库管理员,我接到许多电话是关于磁盘空间的。我所做的第一件事是找到可以缩小的数据文件来释放一些磁盘上的空间。我
- 前言如何通过python实现邮件解析?邮件的格式十分复杂,主要是mime协议,本文主要是从实现出发,具体原理可以自行研究。一、安装通过mai
- Django学习笔记-学生管理系统(Django实现)笔记中仅实现了对数据的全部查询。下面实现新增、删除、修改,代码如下。下面的代码没有对输
- 快速测试创建项目与appdjango-admin startproject mysitedjango-admin startapp app1
- 本文实例讲述了Python实现栈和队列的简单操作方法。分享给大家供大家参考,具体如下:先简单的了解一下数据结构里面的栈和堆:栈和队列是两种基
- 问题在一个python web应用中需要定时执行一些任务,所以用了APScheduler这个库。又因为是用flask这个web框架,所以用了