CSV文件(2)

上一节我们讲了使用Python对CSV文件进行读写。事实上,当列中包含额外的逗号时,CSV分析会失败。
  我们打开supplier_data.csv,将Cost列中的最后两个成本数量分别改为$6,015.00和$1,006,015.00,。
  之前的脚本是按照行中的逗号分析每行数据的,这会让脚本错误地拆分最后两行的数据,因为数据中有逗号。
  有很多方法可以改进这个脚本中的代码,使它可以正确地处理包含逗号的数值。我们可以使用正则表达式,但为了不使脚本复杂化,我们可以使用Python内置的csv模块。这个模块可以方便灵活地处理复杂的CSV文件。

修改后的脚本读写CSV文件
  使用Python内置的csv模块处理CSV文件的一个优点是,这个模块就是被设计用于正确处理数据值中的嵌入逗号和其他复杂模式的,它可以识别出这些模式并正确地处理数据。
  修改后的代码如下:

#!/usr/bin/env python3

import csv
import sys

input_file = sys.argv[1]
output_file = sys.argv[2]

with open(input_file, 'r', newline='') as csv_in_file:
    with open(output_file, 'w', newline='') as csv_out_file:
        filereader = csv.reader(csv_in_file, delimiter=',')
        filewriter = csv.writer(csv_out_file, delimiter=',')
        for row_list in filereader:
            print(row_list)
            filewriter.writerow(row_list)

我们来解释一下上面的代码。

import csv

这行代码导入csv模块,以便可以使用其中的函数来分析输入文件,写入输入文件。

 filereader = csv.reader(csv_in_file, delimiter=',')
    filewriter = csv.writer(csv_out_file, delimiter=',')

这两行代码使用csv模块中的reader()函数和writer()函数分别创建了一个文件读取对象filereader和文件写入对象filewriter。这两个函数中的第二个参数delimiter=’,'是默认分隔符,如果输入文件和输出文件都是用逗号分隔的,就不需要指定这个参数。这里指定分隔符函数,是为了防备待处理的输入文件或要写入的输出文件具有不同的分隔符,例如分号;或制表符\t。

   filewriter.writerow(row_list)

1
  这行代码使用filewriter对象的writerow()函数来将每行中的列表值写入输出文件。
  我们在命令行窗口运行这个脚本。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值