最近看到市場上各種的文檔格式轉換軟件,要么是收費、要么是有大量的廣告。於是學習了一下 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 做一個天氣查詢系統(文末領取完整代碼)!