如何转义CSV文件中的逗号

CSV全称是:Comma Separated Values 或者 Character Separated Values。

尽管第一种说法更常见,但我觉得还是第二种说法更确切一些,因为你可以使用其它字符做分隔符。

使用逗号做分隔符的CSV文件有一个好处:你可以直接用Excel打开。如果使用其它分隔符,比如“|”,你必须告诉Excel该文件使用“|”作分隔符,Excel才能把它导入进来。

前几天,project manager告诉我:我们有许多CSV文件,都是使用“|”做分隔符,用Excel打开的时候比较麻烦,用户想在Excel中直接打开。这样就需要使用“,”做分隔符。但是文件中有些字段含有逗号,必须对这些逗号特殊处理,才能保证CSV文件在Excel中正确打开。他还给了我一个算法:

如果字段中有逗号(,),该字段使用双引号(")括起来;

如果该字段中有双引号,该双引号前要再加一个双引号,然后把该字段使用双引号括起来。

看完project manager的要求,我真是满头起包啊。在IT业混了十几年了,竟然不知道这样处理逗号。

举几个例子:


字段处理前


字段处理后


abc,d2


"abc,d2"


ab"c,d2


"ab""c,d2"


"abc


"""abc"


""


""""""

如果字段中有两个挨着的双引号,比如:aaa""ccc。这种情况不用特殊处理。这是我在写这篇博客的时候才想起来的,赶忙使用Excel测试了一下。还好,不用特殊处理就能正常打开,不然我还得改程序。当然了,如果你把它处理成:"aaa""""ccc" Excel也能正常打开。事后总结总结真是有好处啊。

另外,如果某字段第一个字符是空格,第二个字符是双引号,这种情况不用特殊处理。Project Manager在给我描述算法的时候,也举了一个字段只有一个双引号的例子,但他不小心在双引号前面加了个空格,把问题掩盖过去了。

我是在WinXP和MS Excel2007下测试的。如果运行在其他环境和应用程序下,还需进行测试,规则可能不一样。

(这是一篇老博文,11-1-22 下午11:44 发布在Google Blogger上。但我只是几年前在那里发了几篇文章,早已经不维护了,干脆把看得上眼的文章版过来算了)

时间: 2024-12-13 23:26:53

如何转义CSV文件中的逗号的相关文章

Jsoup学习笔记9:Jsoup 解析saz文件,读取其中的htm文件到字符串,提取字符串中的数据写入csv文件中

本篇笔记将上篇笔记的操作做些改进,不再把saz文件中的htm文件解析出来,而是不解压直接读取其中的数据成字符串,基本思路如下: 1.自定义一个从文本文件读取内容到字符串的类:解析saz文件中的htm文档,将文件的内容读取到字符串中 2.自定义利用Jsoup解析htm字符串的类:利用Jsoup解析传入的htm字符串,将解析结果写入csv文件中 3.解析时,指定好文件路径,直接调用上面的两个工具类即可 示例代码如下: package com.daxiang.saztest; /** * 自定义一个从

将CSV文件中的数据导入到SQL Server 数据库中

导入数据时,需要注意 CSV 文件中的数据是否包含逗号以及双引号,存在时,导入会失败 选择数据库 -> 右键 -> 任务 -> 导入数据 ,然后根据弹出的导入导出向导(如下图)中的提示内容进行操作即可. 原文地址:https://www.cnblogs.com/daochangone/p/9134718.html

取出csv文件中的中文评论数据

# -*- coding: utf-8 -*- import csv import re csvfile = 'weibo.csv' def columns_data(path, column): columns_data = '' csvfile = open(path, 'r', encoding='utf-8') DicReader = csv.DictReader(csvfile) for row in DicReader: columns_data = columns_data+row

直接把数据库中的数据保存在CSV文件中

今天突然去聊就来写一个小小的demo喽,嘿嘿 public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { SaveFileDialog saveFileDialog1 = new SaveFileDialog(); saveFileDialog1.Filter = "CSV文件|*.CSV

C#获取CSV文件内容对逗号和引号分隔的处理

我们知道,使用excel工具保存成csv文件时有几个规则: 1.每一行的单元格内容之间用逗号分隔. 2.如果单元格的内容本身有逗号,这个单元格的内容将会用引号包含. 3.如果单元格的内容本身有引号, 引号不在首或尾,这个单元格内容不会被引号包含. 引号在首或尾,这个单元格内容会被引号包含且原来首尾的引号会被转义.

python3 简单实现从csv文件中读取内容,并对内容进行分类统计

新手python刚刚上路,在实际工作中遇到如题所示的问题,尝试使用python3简单实现如下,欢迎高手前来优化 import csv #打开文件,用with打开可以不用去特意关闭file了,python3不支持file()打开文件,只能用open() with open("dk0519_1.csv","r",encoding="utf-8") as csv_file: #读取csv文件,返回的是迭代类型 read = csv.reader(csv

修改读入的CSV文件中的列名

df.rename的用法 存在这样一个CSV文件,想读入文件后,将其列名进行修改,并再写到CSV中. 日期,收盘changeColName,涨跌幅,换手率,振幅,内盘成交量,外盘成交量,金额流入率,大单流入资金,大单流出资金,超大单流入资金,超大单流出资金,大单金额流入率,超大单金额流入率 2010-01-04,47.3,-3.272,0.69437708,0.037423313,,,-8.099998782,56272128,63797540,1235515,2807990,-6.699998

Jmeter自动化测试 数据驱动测试,将数据存入csv文件中来调用,或将数据存在DB中进行调用

1. 将测试的用例名称,测试请求方式,测试链接,预置数据,断言等都放到excel中,然后转成csv格式,在用Jmeter带的csv数据配置文件导入 运行之前将线程组中配置,线程数设置为1,循环的次数设置为测试用例数! 点击执行,将一各个请求顺序执行. 测试数据如下: Jmeter测试计划如下: 注意:excel格式转csv的时候,涉及到字符转义,入参都加了双引号,所以csv配置中需要选择Allow quoted data,允许带引号的数据 如何请求方式有POST也有GET,可以加一个if逻辑控制

python——关于简单爬取博客园班级成员发的博文的题目、发布人、阅读、评论,再存到csv文件中

因为老师要以班里每个人发的博客质量作为最后总成绩的评定的一部分,就要把班上所有同学发的博客都统计起来,可以用来评定的因素有:阅读.评论.推荐等,但因为今天只是做一个简单的爬取,推荐这个元素在班级博客中需要点开每一篇博文才能看到获取,就不爬取了,只爬取阅读和推荐,加上每篇博文的发布人和标题. 我先会放上代码,再逐条解释其含义及作用. 代码如下(其中爬取的网页是以我自己的班级为例): 1 from bs4 import BeautifulSoup 2 import pandas as pd 3 im