共计 3230 个字符,预计需要花费 9 分钟才能阅读完成。
最近看到市场上各种的文档格局转换软件,要么是免费、要么是有大量的广告。于是学习了一下 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() 之间的灵便转换!
PyQt5 GUI && Requests Api 做一个天气查问零碎(文末支付残缺代码)!