文件格式转换:Python的10个转换工具与库介绍

文摘   2024-11-24 10:16   江苏  

在日常编程中,文件格式转换是一项常见的任务。无论是将CSV文件转换为JSON,还是将Excel表格转换为PDF,Python都有许多强大的库可以帮助我们完成这些任务。今天,我们就来介绍10个常用的Python文件格式转换工具与库,并通过实际代码示例来展示它们的使用方法。

1. pandas - CSV to JSON

pandas 是一个非常强大的数据处理库,可以轻松地将CSV文件转换为JSON格式。

import pandas as pd

# 读取CSV文件
df = pd.read_csv('data.csv')

# 将DataFrame转换为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文件转换为CSV格式。

import openpyxl
import csv

# 读取Excel文件
workbook = openpyxl.load_workbook('data.xlsx')
sheet = workbook.active

# 创建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文件已成功转换为CSV文件")

3. xml.etree.ElementTree - XML to JSON

xml.etree.ElementTree 是Python标准库中的一个模块,可以用来解析XML文件并将其转换为JSON格式。

import xml.etree.ElementTree as ET
import json

# 解析XML文件
tree = ET.parse('data.xml')
root = tree.getroot()

# 将XML转换为字典
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)}

# 将字典转换为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文件转换为纯文本。

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内容转换为PDF。

from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
from bs4 import BeautifulSoup
import requests

# 获取HTML内容
url = 'https://example.com'
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')

# 创建PDF文件
c = canvas.Canvas("output.pdf", pagesize=letter)
width, height = letter

# 将HTML内容写入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内容已成功转换为PDF文件")

6. tabulate - CSV to Markdown Table

tabulate 是一个用于生成表格的库,可以将CSV文件转换为Markdown表格。

import pandas as pd
from tabulate import tabulate

# 读取CSV文件
df = pd.read_csv('data.csv')

# 将DataFrame转换为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 (多表转换)

pyexcel 是一个用于处理电子表格的库,支持多种格式的转换。

import pyexcel

# 读取Excel文件
book = pyexcel.get_book(file_name="data.xlsx")

# 将所有工作表转换为CSV文件
for sheet in book:
    sheet.save_as(f"{sheet.name}.csv")

print("所有工作表已成功转换为CSV文件")

8. pdfplumber - PDF to CSV

pdfplumber 是一个用于提取PDF表格的库,可以将PDF表格转换为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表格已成功转换为CSV文件")

9. pydub - MP3 to WAV

pydub 是一个用于处理音频文件的库,可以将MP3文件转换为WAV格式。

from pydub import AudioSegment

# 读取MP3文件
audio = AudioSegment.from_mp3("input.mp3")

# 导出为WAV文件
audio.export("output.wav", format="wav")

print("MP3文件已成功转换为WAV文件")

10. pillow - PNG to JPEG

Pillow 是一个用于处理图像的库,可以将PNG文件转换为JPEG格式。

from PIL import Image

# 打开PNG文件
image = Image.open('input.png')

# 保存为JPEG文件
image.save('output.jpg''JPEG')

print("PNG文件已成功转换为JPEG文件")

实战案例:将多个CSV文件合并为一个Excel文件

假设我们有一个目录,其中包含多个CSV文件,我们需要将这些CSV文件合并为一个Excel文件,每个CSV文件对应一个工作表。

import os
import pandas as pd
import openpyxl

# 定义目录路径
directory = 'csv_files'

# 创建一个新的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))
        
        # 创建新的工作表
        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文件格式转换工具与库,并通过实际代码示例展示了它们的使用方法。从CSV到JSON、Excel到CSV、XML到JSON、PDF到Text、HTML到PDF、CSV到Markdown Table、Excel到CSV(多表转换)、PDF到CSV、MP3到WAV以及PNG到JPEG,这些工具和库都能帮助我们在日常编程中高效地完成文件格式转换任务。最后,我们还提供了一个实战案例,展示了如何将多个CSV文件合并为一个Excel文件。

好了,今天的分享就到这里了,我们下期见。如果本文对你有帮助,请动动你可爱的小手指点赞、转发、在看吧!

付费合集推荐

Python编程基础

Python办公自动化-Excel

微信公众号批量上传发布系统

文末福利

公众号消息窗口回复“编程资料”,获取Python编程、人工智能、爬虫等100+本精品电子书。

精品系统

微信公众号批量上传发布系统

关注我👇,精彩不再错过


手把手PythonAI编程
分享与人工智能和python编程语言相关的笔记和项目经历。
 最新文章