文件格式轉(zhuǎn)換:Python 的十個轉(zhuǎn)換工具與庫介紹
在日常編程中,文件格式轉(zhuǎn)換是一項常見的任務。無論是將CSV文件轉(zhuǎn)換為JSON,還是將Excel表格轉(zhuǎn)換為PDF,Python都有許多強大的庫可以幫助我們完成這些任務。今天,我們就來介紹10個常用的Python文件格式轉(zhuǎn)換工具與庫,并通過實際代碼示例來展示它們的使用方法。
1. pandas - CSV to JSON
pandas 是一個非常強大的數(shù)據(jù)處理庫,可以輕松地將CSV文件轉(zhuǎn)換為JSON格式。
import pandas as pd
# 讀取CSV文件
df = pd.read_csv('data.csv')
# 將DataFrame轉(zhuǎn)換為JSON
json_data = df.to_json(orient='records')
print(json_data)
輸出結果:
[{"name":"Alice","age":25,"city":"New York"},{"name":"Bob","age":30,"city":"Los Angeles"}]
2. openpyxl - Excel to CSV
openpyxl 是一個用于讀寫Excel文件的庫。我們可以使用它將Excel文件轉(zhuǎn)換為CSV格式。
import openpyxl
import csv
# 讀取Excel文件
workbook = openpyxl.load_workbook('data.xlsx')
sheet = workbook.active
# 創(chuàng)建CSV文件
with open('data.csv', 'w', newline='') as file:
writer = csv.writer(file)
for row in sheet.iter_rows(values_only=True):
writer.writerow(row)
print("Excel文件已成功轉(zhuǎn)換為CSV文件")
3. xml.etree.ElementTree - XML to JSON
xml.etree.ElementTree 是Python標準庫中的一個模塊,可以用來解析XML文件并將其轉(zhuǎn)換為JSON格式。
import xml.etree.ElementTree as ET
import json
# 解析XML文件
tree = ET.parse('data.xml')
root = tree.getroot()
# 將XML轉(zhuǎn)換為字典
def xml_to_dict(element):
return {child.tag: xml_to_dict(child) if len(child) else child.text for child in element}
data_dict = {root.tag: xml_to_dict(root)}
# 將字典轉(zhuǎn)換為JSON
json_data = json.dumps(data_dict, indent=4)
print(json_data)
輸出結果:
{
"root": {
"person": [
{
"name": "Alice",
"age": "25",
"city": "New York"
},
{
"name": "Bob",
"age": "30",
"city": "Los Angeles"
}
]
}
}
4. PyPDF2 - PDF to Text
PyPDF2 是一個用于處理PDF文件的庫,可以將PDF文件轉(zhuǎn)換為純文本。
import PyPDF2
# 打開PDF文件
with open('document.pdf', 'rb') as file:
reader = PyPDF2.PdfReader(file)
text = ''
for page in reader.pages:
text += page.extract_text()
print(text)
5. reportlab - HTML to PDF
reportlab 是一個用于生成PDF文件的庫,可以將HTML內(nèi)容轉(zhuǎn)換為PDF。
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
from bs4 import BeautifulSoup
import requests
# 獲取HTML內(nèi)容
url = 'https://example.com'
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
# 創(chuàng)建PDF文件
c = canvas.Canvas("output.pdf", pagesize=letter)
width, height = letter
# 將HTML內(nèi)容寫入PDF
text = soup.get_text()
lines = text.split('\n')
y = height - 50
for line in lines:
c.drawString(50, y, line)
y -= 20
if y < 50:
c.showPage()
y = height - 50
c.save()
print("HTML內(nèi)容已成功轉(zhuǎn)換為PDF文件")
6. tabulate - CSV to Markdown Table
tabulate 是一個用于生成表格的庫,可以將CSV文件轉(zhuǎn)換為Markdown表格。
import pandas as pd
from tabulate import tabulate
# 讀取CSV文件
df = pd.read_csv('data.csv')
# 將DataFrame轉(zhuǎn)換為Markdown表格
markdown_table = tabulate(df, headers='keys', tablefmt='pipe')
print(markdown_table)
輸出結果:
| name | age | city |
|-------|-----|------------|
| Alice | 25 | New York |
| Bob | 30 | Los Angeles|
7. pyexcel - Excel to CSV (多表轉(zhuǎn)換)
pyexcel 是一個用于處理電子表格的庫,支持多種格式的轉(zhuǎn)換。
import pyexcel
# 讀取Excel文件
book = pyexcel.get_book(file_name="data.xlsx")
# 將所有工作表轉(zhuǎn)換為CSV文件
for sheet in book:
sheet.save_as(f"{sheet.name}.csv")
print("所有工作表已成功轉(zhuǎn)換為CSV文件")
8. pdfplumber - PDF to CSV
pdfplumber 是一個用于提取PDF表格的庫,可以將PDF表格轉(zhuǎn)換為CSV格式。
import pdfplumber
import csv
# 打開PDF文件
with pdfplumber.open('document.pdf') as pdf:
for page in pdf.pages:
tables = page.extract_tables()
for table in tables:
with open('output.csv', 'w', newline='') as file:
writer = csv.writer(file)
for row in table:
writer.writerow(row)
print("PDF表格已成功轉(zhuǎn)換為CSV文件")
9. pydub - MP3 to WAV
pydub 是一個用于處理音頻文件的庫,可以將MP3文件轉(zhuǎn)換為WAV格式。
from pydub import AudioSegment
# 讀取MP3文件
audio = AudioSegment.from_mp3("input.mp3")
# 導出為WAV文件
audio.export("output.wav", format="wav")
print("MP3文件已成功轉(zhuǎn)換為WAV文件")
10. pillow - PNG to JPEG
Pillow 是一個用于處理圖像的庫,可以將PNG文件轉(zhuǎn)換為JPEG格式。
from PIL import Image
# 打開PNG文件
image = Image.open('input.png')
# 保存為JPEG文件
image.save('output.jpg', 'JPEG')
print("PNG文件已成功轉(zhuǎn)換為JPEG文件")
實戰(zhàn)案例:將多個CSV文件合并為一個Excel文件
假設我們有一個目錄,其中包含多個CSV文件,我們需要將這些CSV文件合并為一個Excel文件,每個CSV文件對應一個工作表。
import os
import pandas as pd
import openpyxl
# 定義目錄路徑
directory = 'csv_files'
# 創(chuàng)建一個新的Excel工作簿
wb = openpyxl.Workbook()
wb.remove(wb.active) # 刪除默認的工作表
# 遍歷目錄中的CSV文件
for filename in os.listdir(directory):
if filename.endswith('.csv'):
# 讀取CSV文件
df = pd.read_csv(os.path.join(directory, filename))
# 創(chuàng)建新的工作表
sheet_name = os.path.splitext(filename)[0]
ws = wb.create_sheet(title=sheet_name)
# 將DataFrame寫入工作表
for r_idx, row in enumerate(df.values, 1):
for c_idx, value in enumerate(row, 1):
ws.cell(row=r_idx + 1, column=c_idx, value=value)
# 寫入列名
for c_idx, col in enumerate(df.columns, 1):
ws.cell(row=1, column=c_idx, value=col)
# 保存Excel文件
wb.save('combined.xlsx')
print("所有CSV文件已成功合并為一個Excel文件")
總結
本文介紹了10個常用的Python文件格式轉(zhuǎn)換工具與庫,并通過實際代碼示例展示了它們的使用方法。從CSV到JSON、Excel到CSV、XML到JSON、PDF到Text、HTML到PDF、CSV到Markdown Table、Excel到CSV(多表轉(zhuǎn)換)、PDF到CSV、MP3到WAV以及PNG到JPEG,這些工具和庫都能幫助我們在日常編程中高效地完成文件格式轉(zhuǎn)換任務。最后,我們還提供了一個實戰(zhàn)案例,展示了如何將多個CSV文件合并為一個Excel文件。