小工具知识网

当前位置: 首页 > 行业知识 > 处理CSV(python)

行业知识

处理CSV(python)

2026-11-05 01:36:09 来源:互联网转载

处理CSV(python)

  • 简介
    • 1. CSV和Python简介
    • 2. 文章内容简介
    • 一、用csv模块读取和写入CSV文件
      • 1. CSV模块
      • 2. 示例
      • 二、用pandas库读取和写入CSV文件
        • 1. pandas
        • 2. 示例
        • 三、处理CSV文件中的特殊情况
          • 1. 特殊情况及处理方法
          • 2. ���例

            简介

            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文件如下图所示:

上一篇:Android 开发 OCR 拍照 + ML Kit 识别文字 巨详细全部代码教程

下一篇:宝塔面板在VPS上的安装与操作指南