处理CSV(python)

简介

1. CSV和Python简介

CSV是一种常见的数据格式,可以用来存储和交换表格数据。CSV文件由一系列的行组成,每行包含一些用逗号分隔的字段。CSV文件可以用文本编辑器或excel打开和编辑,也可以用编程语言进行处理和分析。

Python是一种流行的编程语言,它有许多内置的模块和第三方库,可以方便地读取和写入CSV文件。

2. 文章内容简介

本文将介绍如何用Python处理CSV文件,包括以下几个方面:

  • 用csv模块读取和写入CSV文件
  • 用pandas库读取和写入CSV文件
  • 处理CSV文件中的特殊情况,如引号、换行符、编码等

一、用csv模块读取和写入CSV文件

1. CSV模块

csv模块是Python标准库中的一个模块,它提供了一些类和函数,可以帮助我们读取和写入CSV文件。csv模块常用的类有两个:

  • csv.reader:用来从一个文件对象或一个迭代器中读取CSV数据,返回一个迭代器,每次迭代返回一个列表,表示一行数据。
  • csv.writer:用来将数据写入一个文件对象或一个迭代器中,接受一个可迭代对象作为参数,每个元素是一个列表,表示一行数据。

2. 示例

示例文件:data.csv如下图:
在这里插入图片描述
用csv模块读取和写入CSV文件:

# 导入csv模块
import csv

# 以只读模式打开一个CSV文件
with open('data.csv', 'r') as f:
    # 创建一个csv.reader对象,指定分隔符为逗号
    reader = csv.reader(f, delimiter=',')
    # 遍历reader对象,打印每一行数据
    for row in reader:
        print(row)

# 用写入模式创建一个新的CSV文件,newline=''可以避免空行
with open('new_data.csv', 'w', newline='') as f:
    # 创建一个csv.writer对象,指定分隔符为逗号
    writer = csv.writer(f, delimiter=',')
    # 写入一些数据,每个元素是一个列表,表示一行数据
    writer.writerow(['name', 'age', 'gender'])
    writer.writerow(['Alice', '25', 'F'])
    writer.writerow(['Bob', '30', 'M'])

执行结果:
在这里插入图片描述
新创建的new_data.csv文件如下图:
在这里插入图片描述
newline='‘可以避免空行,如果没有这一句,在写入的每一行内容后面会有一行空行,如下图:
在这里插入图片描述
关于newline=’'的内容可以去看看pfm685757博主的文章: python3 writerow CSV文件多一个空行

二、用pandas库读取和写入CSV文件

1. pandas

pandas是一个流行的第三方库,它提供了一些高级的数据结构和函数,可以方便地进行数据分析和处理。pandas中最重要的数据结构是DataFrame,它是一个二维的表格数据结构,可以存储不同类型的数据,并支持各种操作。

pandas提供了一些函数,可以轻松地将DataFrame对象转换为CSV文件,或者从CSV文件中读取数据并创建DataFrame对象。这些函数有:

  • pandas.read_csv:从一个CSV文件或一个URL中读取数据,并返回一个DataFrame对象。
  • pandas.to_csv:将一个DataFrame对象写入一个CSV文件或一个字符串中。

2. 示例

示例文件:data.csv如下图所示:
在这里插入图片描述
用pandas读取和写入CSV文件:

# 导入pandas库
import pandas as pd

# 从一个CSV文件中读取数据,并创建一个DataFrame对象
df = pd.read_csv('data.csv')
# 打印df的基本信息
print(df.info())
# 打印df的表头及除表头外的5行数据,默认有表头
print(df.head())

# 用每个元素是字典的列表创建一个新的DataFrame对象
new_df = pd.DataFrame([{'name': 'Alice', 'age': 25, 'gender': 'F'}, {'name': 'Tom', 'age': 28, 'gender': 'M'}])
# 将new_df写入一个新的CSV文件中
new_df.to_csv('new_data.csv', index=False)

运行结果:
在这里插入图片描述
新创建的new_data.csv文件如下图:
在这里插入图片描述

三、处理CSV文件中的特殊情况

有些CSV文件中可能会包含一些特殊情况,如引号、换行符、编码等。在处理这些文件时,我们需要特别注意这些情况,以免导致解析错误或数据丢失。

1. 特殊情况及处理方法

  • 引号:有些CSV文件中的字段可能包含引号,这会影响到CSV文件的解析。如果一个字段包含的文本中包含逗号,则需要将该字段用双引号引起来,以与其他字段区分开。而如果一个字段中本身就包含双引号,则需要用两个双引号来表示一个双引号,例如:“field with ““double quotes”””.
  • 换行符:有些CSV文件中的字段可能包含换行符,这也会影响到CSV文件的解析。通常情况下,换行符应该被视为字段内容的一部分,而不是分隔符。当读取包含换行符的CSV文件时,应该将整个文本字段读入并处理换行符。而写入包含换行符的CSV文件时,则需要将该字段用双引号或其他符号引起来,以确保换行符不会被看作是一个新的行。
  • 编码问题:CSV文件中的数据可能使用不同的编码方式进行存储,这也会影响到CSV文件的解析。通常情况下,应该使用与CSV文件相同的编码方式进行解析和处理。如果CSV文件的编码方式不确定,则可以尝试使用一些常见的编码方式(如UTF-8、GBK、ISO-8859-1等)进行解析,并观察数据的准确性和完整性。

2. 示例

示例文件:data_with_quotes.csv如下图:
在这里插入图片描述

处理包含引号和换行符的CSV文件:

import csv

# 使用csv.reader读取包含引号和换行符的CSV文件
with open('data_with_quotes.csv', 'r') as f:
    reader = csv.reader(f, delimiter=',', quotechar='"')
    for row in reader:
        print(row)

# 使用csv.writer写入包含引号和换行符的CSV文件
with open('new_data_with_quotes.csv', 'w', newline='') as f:
    # 使用quotechar参数来指定引号字符,quoting参数来指定如何引用特殊字符
    writer = csv.writer(f, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
    writer.writerow(['name', 'age', 'text'])
    writer.writerow(['Alice', '25', 'This is a "text" field.'])
    writer.writerow(['Tom', '28', 'This is a field\nwith\nnewlines.'])

运行结果:
在这里插入图片描述

新创建的new_data_with_quotes.csv文件如下图所示:
在这里插入图片描述

  • 14
    点赞
  • 76
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
PythonCSV(Comma-Separated Values)是一种常见的文件格式,用于存储和处理以逗号分隔的数据。通过使用Python内置的csv模块,我们可以轻松地读取、写入和操作CSV文件。 要读取CSV文件,我们可以使用csv模块中的reader()函数。该函数接受一个文件对象作为参数,并返回一个可迭代的reader对象,我们可以使用for循环逐行读取CSV文件的内容。 要写入CSV文件,我们可以使用csv模块中的writer()函数。该函数接受一个文件对象作为参数,并返回一个csv writer对象,我们可以使用writerow()方法写入单行数据,或者使用writerows()方法写入多行数据。 下面是一个示例代码,演示了如何使用Pythoncsv模块读取和写入CSV文件: ```python import csv # 读取CSV文件 with open('data.csv', 'r') as file: csv_reader = csv.reader(file) for row in csv_reader: print(row) # 写入CSV文件 data = [['Name', 'Age'], ['John', '25'], ['Alice', '30'], ['Bob', '35']] with open('output.csv', 'w', newline='') as file: csv_writer = csv.writer(file) csv_writer.writerows(data) ``` 在上面的示例中,我们首先使用csv.reader()函数读取名为data.csvCSV文件,并使用for循环逐行打印出文件的内容。然后,我们使用csv.writer()函数创建一个名为output.csvCSV文件,并使用writerows()方法将包含姓名和年龄的数据写入文件中。 这是使用Python处理CSV文件的基本方法。通过使用csv模块,我们可以轻松地读取和写入CSV文件,并对其中的数据进行操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [没基础,也可一文看懂 python 中的 csv 模块](https://blog.csdn.net/hihell/article/details/121250076)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [十分钟学会如何用Python处理CSV文件](https://blog.csdn.net/w0801101117/article/details/119731390)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值