如何使用Python高效读写CSV文件?

2026-05-24 14:451阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计631个文字,预计阅读时间需要3分钟。

如何使用Python高效读写CSV文件?

文件读写操作的经典方式如下,通过内置的open函数读取到每行内容,按照指定的分隔符进行分割,然后对每一列的内容进行处理。这种方式在处理制表符分隔的文件时特别有用,没有问题。


文件读写的经典操作方式如下,通过内置的open函读取到每行内容,按照指定的分隔符进行分隔,然后对每一列的内容进行处理。这样的方式在处理制表符分隔的文件时,没什么问题,但是在处理csv文件时,会非常的头痛。

CSV文件格式简单理解,是逗号分隔的纯文本,但是实际上非常灵活。在excel导出的csv文件中,会遇到某个字段内部出现了逗号的情况,这样的字符在两端添加双引号来进行区分,示意如下


name,"jack,rose",26

传统的读取方式,单纯用逗号分隔,会得到4个字段

>>> with open('file.csv') as f:
... for line in f:
... print(line.rstrip().split(','))
...
['name', '"jack', 'rose"', '26']


而实际上,应该是3个字段。为了正确的处理csv格式,python内置了csv模块,专门用于读写csv格式的文件。读取csv文件的代码如下

如何使用Python高效读写CSV文件?

>>> import csv
>>> with open('file.csv', newline='') as f:
... reader = csv.reader(f)
... for row in reader:
... print(row)
...
['name', 'jack,rose', '26']

可以看到,处理出来的格式和预期的一致,每一行的内容是一个列表。对于第一行为表头的csv文件

    Name,Student,Age
    name,"jack,rose",26


    也可以通过DictReader方法来读取,代码如下

    >>> with open('file.csv') as f:
    ... reader = csv.DictReader(f)
    ... for row in reader:
    ... print(row)
    ...
    {'Name': 'name', 'Student': 'jack,rose', 'Age': '26'}

    每一行的内容是一个dict, key为对应的表头。生成csv也有列表和字典两种写法

    # 写入列表
    >>> import csv
    >>> line = ['name', 'jack,rose', '26']
    >>> with open('out.csv','w') as csvfile:
    ... f = csv.writer(csvfile)
    ... f.writerow(line)
    ...
    21
    # 写入字典
    >>> head = ['Name', 'Student', 'Age']
    >>> line = {'Name': 'name', 'Student': 'jack,rose', 'Age': '26'}
    >>> with open('dict.csv','w') as csvfile:
    ... f = csv.DictWriter(csvfile, fieldnames = head)
    ... f.writeheader()
    ... f.writerow(line)
    ...
    21

    对于csv文件,用csv模块来处理,可以保证结果的准确性,避免不必要的错误。

    ·end·

    —如果喜欢,快分享给你的朋友们吧—



    标签:经典

    本文共计631个文字,预计阅读时间需要3分钟。

    如何使用Python高效读写CSV文件?

    文件读写操作的经典方式如下,通过内置的open函数读取到每行内容,按照指定的分隔符进行分割,然后对每一列的内容进行处理。这种方式在处理制表符分隔的文件时特别有用,没有问题。


    文件读写的经典操作方式如下,通过内置的open函读取到每行内容,按照指定的分隔符进行分隔,然后对每一列的内容进行处理。这样的方式在处理制表符分隔的文件时,没什么问题,但是在处理csv文件时,会非常的头痛。

    CSV文件格式简单理解,是逗号分隔的纯文本,但是实际上非常灵活。在excel导出的csv文件中,会遇到某个字段内部出现了逗号的情况,这样的字符在两端添加双引号来进行区分,示意如下


    name,"jack,rose",26

    传统的读取方式,单纯用逗号分隔,会得到4个字段

    >>> with open('file.csv') as f:
    ... for line in f:
    ... print(line.rstrip().split(','))
    ...
    ['name', '"jack', 'rose"', '26']


    而实际上,应该是3个字段。为了正确的处理csv格式,python内置了csv模块,专门用于读写csv格式的文件。读取csv文件的代码如下

    如何使用Python高效读写CSV文件?

    >>> import csv
    >>> with open('file.csv', newline='') as f:
    ... reader = csv.reader(f)
    ... for row in reader:
    ... print(row)
    ...
    ['name', 'jack,rose', '26']

    可以看到,处理出来的格式和预期的一致,每一行的内容是一个列表。对于第一行为表头的csv文件

      Name,Student,Age
      name,"jack,rose",26


      也可以通过DictReader方法来读取,代码如下

      >>> with open('file.csv') as f:
      ... reader = csv.DictReader(f)
      ... for row in reader:
      ... print(row)
      ...
      {'Name': 'name', 'Student': 'jack,rose', 'Age': '26'}

      每一行的内容是一个dict, key为对应的表头。生成csv也有列表和字典两种写法

      # 写入列表
      >>> import csv
      >>> line = ['name', 'jack,rose', '26']
      >>> with open('out.csv','w') as csvfile:
      ... f = csv.writer(csvfile)
      ... f.writerow(line)
      ...
      21
      # 写入字典
      >>> head = ['Name', 'Student', 'Age']
      >>> line = {'Name': 'name', 'Student': 'jack,rose', 'Age': '26'}
      >>> with open('dict.csv','w') as csvfile:
      ... f = csv.DictWriter(csvfile, fieldnames = head)
      ... f.writeheader()
      ... f.writerow(line)
      ...
      21

      对于csv文件,用csv模块来处理,可以保证结果的准确性,避免不必要的错误。

      ·end·

      —如果喜欢,快分享给你的朋友们吧—



      标签:经典