基于Python實(shí)現(xiàn)簡(jiǎn)易文檔格式轉(zhuǎn)換器
最近看到市場(chǎng)上各種的文檔格式轉(zhuǎn)換軟件,要么是收費(fèi)、要么是有大量的廣告。于是學(xué)習(xí)了一下 PyQt5 的頁(yè)面操作,再加上了解 pandas 的使用方法。所以,萌生了想法寫(xiě)一個(gè)簡(jiǎn)單的文檔格式轉(zhuǎn)換應(yīng)用?;蛘哂懈玫膶?shí)現(xiàn)方式請(qǐng)?jiān)谠u(píng)論區(qū)留言,大家一起討論學(xué)習(xí)~
需求分析
1、將 .txt 的文本文檔轉(zhuǎn)換成 csv 格式文件。
2、將 .txt 的文本文檔轉(zhuǎn)換成 excel 格式文件。
開(kāi)發(fā)環(huán)境
1、運(yùn)行環(huán)境:python-3.8.x版本
2、操作系統(tǒng):windows7 系統(tǒng)
3、開(kāi)發(fā)工具:pycharm 2021.1 版本
引用模塊
PyQt5 引用的相關(guān)模塊
from PyQt5.QtWidgets import * from PyQt5.QtCore import * from PyQt5.QtGui import *
系統(tǒng)文件操作引用的模塊
import sys import os import pandas as pd
UI界面代碼塊
設(shè)置桌面應(yīng)用標(biāo)題
self.setWindowTitle('文本格式轉(zhuǎn)換器') grid = QGridLayout()
創(chuàng)建一個(gè) QTextEdit(),將應(yīng)用中文檔格式轉(zhuǎn)換中需要注意的地方以文本的形式進(jìn)行說(shuō)明并將其設(shè)置為只讀模式。
'''文檔轉(zhuǎn)換說(shuō)明''' self.text_current_label = QTextEdit() self.text_current_label.setReadOnly(True) self.text_current_label.setText('' '1、txt 文本格式說(shuō)明:每行數(shù)據(jù)使用英文狀態(tài)下的逗號(hào)","隔開(kāi),txt ' '格式的文檔是按照每行數(shù)據(jù)進(jìn)行讀取的,所以需要按照規(guī)則進(jìn)行換行保證每行的數(shù)據(jù)格式一致。\n' '每行數(shù)據(jù)舉例:zhangsan,21,男,98,優(yōu)秀\n\n' '2、excel 格式的文檔需要事先創(chuàng)建好.xlsx 的空文件(本應(yīng)用不會(huì)自動(dòng)創(chuàng)建新文件,后期需要可以加上)。\n\n' '3、csv 格式的文檔需要事先創(chuàng)建好 .csv 的空文件(本應(yīng)用不會(huì)自動(dòng)創(chuàng)建新文件,后期需要可以加上)。') self.text_current_label.setStyleSheet('color:blue') self.text_current_label.setMaximumHeight(90)
讀取 .txt 的文本文檔文件的按鈕,并將文檔地址設(shè)置到輸入框中的操作。因此,需要?jiǎng)?chuàng)建一個(gè)文件讀取按鈕以及只讀模式的輸入框。
'''.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 文件的讀取頁(yè)面設(shè)計(jì)。
'''.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)
最后,加上文件轉(zhuǎn)換的可選項(xiàng)設(shè)計(jì),再添加開(kāi)始轉(zhuǎn)換的按鈕提供應(yīng)用轉(zhuǎn)換的開(kāi)始執(zhí)行的效果。
'''.xlsx .csv 選項(xiàng) 轉(zhuǎn)換按鈕''' 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('開(kāi)始轉(zhuǎn)換') self.trans_btn.setStyleSheet('color:green') self.trans_btn.clicked.connect(self.trans_btn_click)
主要的UI界面相關(guān)的設(shè)計(jì)就是上述這些
格式轉(zhuǎn)換主要代碼塊
首先,將 .txt 文本文檔的文件讀取出來(lái),并以 DataFrame 的數(shù)據(jù)格式存放到變量供后面的格式轉(zhuǎn)換使用。
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('請(qǐng)正確填寫(xiě)數(shù)據(jù)列!') else: self.data_frame = pd.read_csv(self.txt_file_path.text(), encoding='utf-8', index_col=0) print(self.data_frame)
使用 pandas 模塊提供的 csv 文件保存函數(shù)進(jìn)行 .csv 格式的文件保存。
def dataframe_to_csv(self): self.data_frame.to_csv(self.csv_file_path.text())
使用 pandas 模塊提供的 excel 文件保存函數(shù)進(jìn)行 .xlsx 格式的文件保存。
def dataframe_to_xlsx(self): self.data_frame.to_excel(self.xlsx_file_path.text())
效果展示
界面風(fēng)格比較簡(jiǎn)單,看一下整個(gè)應(yīng)用界面設(shè)計(jì)是這樣的。
以上就是基于Python實(shí)現(xiàn)簡(jiǎn)易文檔格式轉(zhuǎn)換器的詳細(xì)內(nèi)容,更多關(guān)于Python文檔格式轉(zhuǎn)換器的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- 用Python制作簡(jiǎn)單的樸素基數(shù)估計(jì)器的教程
- 運(yùn)行python提示no module named sklearn的解決方法
- Python 機(jī)器學(xué)習(xí)工具包SKlearn的安裝與使用
- python機(jī)器學(xué)習(xí)Sklearn實(shí)戰(zhàn)adaboost算法示例詳解
- python機(jī)器學(xué)習(xí)sklearn實(shí)現(xiàn)識(shí)別數(shù)字
- python?sklearn?畫(huà)出決策樹(shù)并保存為PDF的實(shí)現(xiàn)過(guò)程
- Python?sklearn轉(zhuǎn)換器估計(jì)器和K-近鄰算法
相關(guān)文章
Python實(shí)現(xiàn)簡(jiǎn)單的索引排序與搜索功能
這篇文章主要介紹了Python實(shí)現(xiàn)簡(jiǎn)單的索引排序與搜索功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04Python3+OpenCV2實(shí)現(xiàn)圖像的幾何變換(平移、鏡像、縮放、旋轉(zhuǎn)、仿射)
這篇文章主要介紹了Python3+OpenCV2實(shí)現(xiàn)圖像的幾何變換(平移、鏡像、縮放、旋轉(zhuǎn)、仿射),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-05-05Python定時(shí)任務(wù)框架APScheduler原理及常用代碼
這篇文章主要介紹了Python定時(shí)任務(wù)框架APScheduler原理及常用代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10Python定時(shí)任務(wù)APScheduler安裝及使用解析
這篇文章主要介紹了Python定時(shí)任務(wù)APScheduler安裝及使用解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08Python tensorflow實(shí)現(xiàn)mnist手寫(xiě)數(shù)字識(shí)別示例【非卷積與卷積實(shí)現(xiàn)】
這篇文章主要介紹了Python tensorflow實(shí)現(xiàn)mnist手寫(xiě)數(shù)字識(shí)別,結(jié)合實(shí)例形式分析了基于tensorflow模塊使用非卷積與卷積算法實(shí)現(xiàn)手寫(xiě)數(shù)字識(shí)別的具體操作技巧,需要的朋友可以參考下2019-12-12一文帶你了解Python中不同數(shù)據(jù)對(duì)象的空值校驗(yàn)方法
空值校驗(yàn)在數(shù)據(jù)處理和應(yīng)用程序開(kāi)發(fā)中是一個(gè)非常重要的任務(wù),Python提供了多種方式來(lái)檢查不同數(shù)據(jù)對(duì)象(如字符串、列表、字典、集合等)是否為空或包含空值,下面就跟隨小編一起來(lái)學(xué)習(xí)一下吧2024-01-01python視頻轉(zhuǎn)化字節(jié)問(wèn)題的完整實(shí)現(xiàn)
在Python中可以將視頻和字節(jié)進(jìn)行轉(zhuǎn)換,下面這篇文章主要給大家介紹了關(guān)于python視頻轉(zhuǎn)化字節(jié)問(wèn)題的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-05-05