最近看到市场上各种的文档格式转换软件,要么是收费、要么是有大量的广告。于是学习了一下 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())
效果展示
界面风格比较简单,看一下整个应用界面设计是这样的。
文章图片
效果操作前往全文查看......
完整源代码获取方式:公众号内回复 "文本格式转换器",欢迎在评论区留下您宝贵的建议!
文章图片
【往期精选】
PyPDF2如何实现按照PDF页码提取后并另存为PDF格式文件?
浪漫的turtle,送给程序员自己的圣诞树!
PyQt5 GUI:百度图片下载器(文末附源码)
python3中的zip()、zip(*)、list()之间的灵活转换!
【自制文档格式转换器,支持 .txt/.xlsx/.csv格式转换...】PyQt5 GUI && Requests Api 做一个天气查询系统(文末领取完整代码)!
推荐阅读
- 推荐系统论文进阶|CTR预估 论文精读(十一)--Deep Interest Evolution Network(DIEN)
- Python专栏|数据分析的常规流程
- Python|Win10下 Python开发环境搭建(PyCharm + Anaconda) && 环境变量配置 && 常用工具安装配置
- Python绘制小红花
- Pytorch学习|sklearn-SVM 模型保存、交叉验证与网格搜索
- OpenCV|OpenCV-Python实战(18)——深度学习简介与入门示例
- python|8. 文件系统——文件的删除、移动、复制过程以及链接文件
- 爬虫|若想拿下爬虫大单,怎能不会逆向爬虫,价值过万的逆向爬虫教程限时分享
- 分布式|《Python3网络爬虫开发实战(第二版)》内容介绍
- java|微软认真聆听了开源 .NET 开发社区的炮轰( 通过CLI 支持 Hot Reload 功能)