Python CSV案例如何读写CSV表格

wen python案例 28

Python CSV案例:从零掌握CSV表格读写全攻略

📖 目录导读

  1. CSV文件基础认知
  2. Python操作CSV的三种核心方式
  3. 基础读写实战
  4. 处理复杂数据(含中文/特殊字符)
  5. 大数据量CSV的流式处理
  6. 常见问题与避坑指南
  7. SEO优化技巧:让CSV表格内容被搜索引擎抓取

CSV文件基础认知

什么是CSV?
CSV(Comma-Separated Values,逗号分隔值)是一种纯文本格式,用逗号分隔字段,支持Excel、数据库和编程语言直接读写。

Python CSV案例如何读写CSV表格

姓名,年龄,城市
张三,28,北京
李四,35,上海

为什么用Python处理CSV?
数据清洗、自动化报表、爬虫数据存储、迁移数据库等场景中,Python的csv模块和pandas库是行业标准工具,根据Web数据统计,超过70%的ETL任务依赖CSV格式。

问答环节
Q:CSV与Excel文件的本质区别是什么?
A:CSV是纯文本(可用记事本打开),不保存格式、公式、样式;Excel是二进制文件(.xlsx),包含元数据,Python中处理CSV更快,且跨平台兼容性更好。


Python操作CSV的三种核心方式

方式 适用场景 核心函数
csv 模块(内置) 小规模数据、无需复杂处理 csv.reader()csv.writer()
pandas 数据分析、清洗、转换 pd.read_csv()df.to_csv()
原生文件处理 异常格式(如分号分隔) file.read().split()

提示:搜索引擎优化(SEO)要求内容结构清晰,使用表格和标题层级有助于爬虫理解页面逻辑。


案例一:基础读写实战

1 写入CSV文件

import csv
# 数据准备
headers = ['ID', '标题', '浏览量']
rows = [
    [1, '如何学习Python', 2300],
    [2, 'SEO基础技巧', 4100],
    [3, '数据分析入门', 1800]
]
# 写入(自动处理引号、换行)
with open('articles.csv', 'w', newline='', encoding='utf-8') as f:
    writer = csv.writer(f)
    writer.writerow(headers)  # 写入表头
    writer.writerows(rows)    # 写入数据行

输出文件内容

1,如何学习Python,2300
2,SEO基础技巧,4100
3,数据分析入门,1800

2 读取CSV文件

with open('articles.csv', 'r', encoding='utf-8') as f:
    reader = csv.reader(f)
    for row_index, row in enumerate(reader):
        if row_index == 0:
            print(f"表头:{row}")
        else:
            print(f"第{row_index}行:ID={row[0]}, 标题={row[1]}, 浏览={row[2]}")

输出结果

表头:['ID', '标题', '浏览量']
第1行:ID=1, 标题=如何学习Python, 浏览=2300
第2行:ID=2, 标题=SEO基础技巧, 浏览=4100

问答环节
Q:为什么open()要指定newline=''
A:在Windows系统中,如果省略该参数,写入时会出现空行,这是Python官方文档强调的兼容性优化。


案例二:处理复杂数据(含中文/特殊字符)

1 中文冲突问题

CSV文件中的中文乱码常因编码不统一导致。最佳实践:统一使用utf-8编码。

# 写入时指定编码
with open('product.csv', 'w', newline='', encoding='utf-8-sig') as f:
    # utf-8-sig会添加BOM头,让Excel正确识别中文
    writer = csv.writer(f)
    writer.writerow(['商品', '价格', '描述'])
    writer.writerow(['笔记本电脑', 5999, '第11代英特尔酷睿'])

注意utf-8-sig在文件开头插入字节顺序标记(BOM),Excel可正确显示中文;普通utf-8无BOM时,Excel会乱码。

2 字段含逗号/换行的处理

CSV用双引号包裹含特殊字符的字段:

row = ['"爆款"商品', 199, '支持"分期付款"\n24期免息']
# 自动转义为:"""爆款""商品",199,"支持""分期付款""\n24期免息"

读取时自动解析

import csv
import io
text = '''"""爆款""商品",199,"支持""分期付款""\n24期免息"'''
reader = csv.reader(io.StringIO(text))
for row in reader:
    print(row[0])  # 输出: "爆款"商品

案例三:大数据量CSV的流式处理

当CSV文件超过百MB甚至GB级别时,一次性读入会耗尽内存。使用生成器分块处理是SEO爬虫和数据分析的最佳实践。

import csv
def process_large_csv(file_path, chunk_size=1000):
    with open(file_path, 'r', encoding='utf-8') as f:
        reader = csv.reader(f)
        headers = next(reader)  # 单独提取表头
        chunk = []
        for row in reader:
            chunk.append(row)
            if len(chunk) >= chunk_size:
                yield chunk, headers
                chunk = []
        if chunk:  # 处理最后不足chunk_size的部分
            yield chunk, headers
# 使用示例
for chunk, headers in process_large_csv('huge_data.csv', 500):
    print(f"处理了{len(chunk)}行数据")
    # 在这里做业务逻辑:清洗、统计、写入数据库

性能对比

  • 普通读取(list(reader)):100MB文件需500MB内存
  • 流式读取(生成器):仅需1-10MB内存
  • 搜索引擎爬虫会优先抓取页面中此类实用代码示例,提升用户停留时间

常见问题与避坑指南

1 分隔符不是逗号怎么办?

某些CSV文件使用分号、Tab(\t)或竖线(|)分隔,使用csv.reader()delimiter参数:

with open('data.tsv', 'r') as f:
    reader = csv.reader(f, delimiter='\t')  # 制表符分隔

2 表头为空或缺失

# 读取时不指定表头
data = pd.read_csv('no_header.csv', header=None)
data.columns = ['col1', 'col2', 'col3']  # 手动命名

3 数值类型转换

CSV读入的字段全是字符串,需手动转换:

def safe_float(value):
    try:
        return float(value)
    except ValueError:
        return None
rows = [['1.5', '3', 'abc'], ['2.0', '5', 'def']]
for row in rows:
    price = safe_float(row[0])
    if price and price > 2:
        print(price)

问答环节
Q:为什么我的CSV在Excel里显示乱码?
A:请确认:①文件保存为utf-8-sig编码;②Excel通过“数据→自文本”导入,并选择UTF-8编码。


SEO优化技巧:让CSV表格内容被搜索引擎抓取

1 结构化数据标记

在HTML中嵌入Schema标记,帮助Google识别表格内容:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Dataset",
  "name": "商品价格案例数据",
  "encodingFormat": "text/csv",
  "distribution": {
    "@type": "DataDownload",
    "contentUrl": "https://example.com/data.csv"
  }
}
</script>

2 内链与锚文本优化

  • 在文章中使用关键词“Python CSV案例”作为锚文本,链接到本页面
  • 在段落中自然融入长尾词:CSV表格读写实战、中文CSV乱码解决、大数据CSV流式处理
  • 图片使用ALT标签,<img src="csv-excel-comparison.jpg" >

3 页面加载速度

  • 将CSV示例文件托管在CDN,避免阻塞页面渲染
  • 使用懒加载技术:<img loading="lazy">
  • 减少HTTP请求:合并CSS/JS文件

4 用户互动设计

  • 在文章末尾提供“下载完整案例代码”的按钮(对应域名替换为:https://example.com/csv-demo
  • 添加评论区,触发用户提问(如“为什么我的pandas读取CSV报错?”)可延长页面停留时间

📌 总结与下一步行动

通过本文,你已掌握:

  • CSV文件的本质与Python三种操作方法
  • 从基础写入读到大数据流式处理的完整案例
  • 中文乱码、特殊字符、分块处理等实战难题
  • 针对Google和Bing的SEO优化策略

立即动手:复制文章中的代码到本地运行,将你的数据导出为CSV格式,如果遇到问题,欢迎在评论区留言,我会在24小时内回复。

最后提醒:搜索引擎喜欢“新鲜、实用、深度”,在更新你的博客时,定期检查CSV案例的代码是否兼容最新Python版本(当前3.11+),并添加新需求的解决方案。

抱歉,评论功能暂时关闭!