Python 标准库-CSV 文件读写

目录

【1】读取CSV

【2】字典方式写入

【3】常用自定义


涉及方法:

  1. csv.DictReader
  2. csv.DictWriter

【1】读取CSV

def readToCsvFile(csv_path, u_delimiter=',', u_doublequote=True):
    read_file = []
    try:
        with open(csv_path, newline='', encoding='utf-8') as csvfile:
            reader = csv.DictReader(csvfile, delimiter=u_delimiter, doublequote=u_doublequote,quotechar="\"")
            for line in reader:
                read_file.append(line)
            return read_file
    except Exception as e:
        logging.error(f'readToCsvFile{csv_path}读取异常,error msg: {e}')
        return f'False,readToCsvFile{csv_path}读取异常'

示例文件:

  1. delimiter

delimiter定义了CSV文件的分割符,默认为“,”,通过自定义设置

如delimiter="|"

可以用来分割|类型的文件

  1. doublequote

此文件使用双引号转义字段中嵌入的双引号字符。 默认情况下,doublequote设置为True。 结果,在读取两个连续的双引号时会被解释为一个。

如果将doublequote设置为False,则连续的双引号将出现在输出中。

  1. quotechar

对于“0,0”中包含”,“的情况,可以使用quotechar="\"" 将”“内的数据作为一个整体,使用‘0,0’则将quotechar="'"即可

示例如上图中

【2】字典方式写入

def saveToCsvFile(csv_path, params, fieldnames,u_delimiter=','):
    try:
        with open(csv_path, 'w', newline='', encoding='utf-8') as csvfile:
            writer = csv.DictWriter(csvfile, fieldnames=fieldnames, delimiter=u_delimiter)
            writer.writeheader()
            # for line in params:
            writer.writerows(params)
    except Exception as e:
        logging.error(f'saveToCsvFile方法{csv_path}创建异常,error msg: {e}')
        return False
    else:
        return True

当delimiter为“|”时,doublequote与读取时配置一致

【3】常用自定义

参数

默认值

描述

delimiter

,

它是指用于分隔 CSV 文件中的值(或字段)的字符。

skipinitialspace

False

它控制定界符后面的空格的解释方式。 如果为True,则将删除初始空格。

lineterminator

\r\n

它是指用于终止行的字符序列。

quotechar

"

它指的是如果字段中出现特殊字符(如定界符),则将用于引用值的单个字符串。

quoting

csv.QUOTE_NONE

控制引号由作者生成或由读者识别的时间(其他选项请参见上文)。

escapechar

None

引用设置为引号时,它用于转义定界符的一字符字符串。

doublequote

True

控制字段内引号的处理。 当True时,在读取期间将两个连续的引号解释为一个,而在写入时,将嵌入数据中的每个引号字符写入为两个引号。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Oxygen2Test

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值