CSV文件的转义处理

原文:http://blog.csdn.net/maqingli20/article/details/7095132

------------------------------------------------------------------------------------

 CSV文件是一种适合程序格式化输出数据的文件格式。它使用英文逗号作为列分隔符,文件可以直接用Excel打开。CSV的规则简单,便于程序输出;Excel对CSV的兼容性使得我们可以非常轻松的使用Excel提供的所有强大功能。

                唯一需要注意的地方就是CSV是使用英文逗号作为列分隔符的,所以当你输出的文本中含有英文逗号时就会被CSV认为是列分隔符,从而使得文件的现实格式与预想中的不同。因此,我们需要对内容进行转义。

                网上可以得到的关于CSV的转义大致可以总结为:

1.      如果一个单元内含有逗号,那么用半角双引号将内容包含,其中的逗号将不被识别为列分隔符;

2.      如果原内容中出现了半角双引号,便是用两个半角双引号转义。           

但是在实际操作中,就会发现如果某个单元内出现多个逗号,双引号,我们的规则便不对了。例如:

test,ma, "ma, ""go"", ""go"",""go"""

我们希望的输出格式是三列,但是Excel会显示为六列。我们的转义字符失效了。

         
 

test

 
 

 ma

 
 

 "ma

 
 

 ""go""

 
 

 ""go""

 
 

 ""go"""

 

 

之所以如此,通过我的分析,我认为CSV将每个逗号之间的内容作为首要参考标准。如果用逗号作分隔是可行的,那么Excel将不会做任何更多的处理。

看一个更简单的例子:

test,ma, "woshima, sldkl",

我们希望将其显示为三列,但是结果却是四列:

 

       
 

test

 
 

 ma

 
 

 "woshima

 
 

 sldkl"

 

 

由此可见,网上流传的转移规则并不完全。其根本原因在于,CSV只是一个技术规范,不同的程序对其有不同的支持;而且CSV本身的规范也是相当繁琐。如果希望用程序去实现这样的规范,那么CSV的简单性的优势将不复存在。

好了,说到这里,我们应该怎么做呢? 我个人认为,最好的办法就是规定一个特殊的字符串作为英文逗号的转义字符。

这样就一了百了。



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/539146.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为读取版本exe_关于esrv_svc.exe和SurSvc.exe疑似泄露用户信息的猜测

封面图片来源:https://www.weibo.com/1885454921/GpBhR3vpk?typerepost#_rnd1573301201348抱歉,写网页文章的次数不多,排版没研究过,请原谅。下面是正题:由来:最初是借由火绒的自定义防护规则,…

gitlab ci mysql_php-Gitlab CI:在阶段之间保留MySQL数据

根据Gitlab问题页面:Share service between build stages.Gitlab-CI的设置方式如下:each job is run in each job is run independently of the others,including potentially running on different machines. And the servicesare run locally on each …

flask 部署_只需10分钟!就能用Flask,Docker和Jenkins部署机器学习模型

摘要: 一杯茶的功夫部署完成机器学习模型!在生产环境中部署机器学习模型是数据工程中经常被忽视的领域。网上的大多数教程/博客都侧重于构建、训练和调整机器学习模型。如果它不能用于实际的预测,那么它又有什么用呢? 接下来了解一…

Hive 导入CSV文件

SerDe 介绍 Hive 使用如下FileFormat 类读写 HDFS files: TextInputFormat/HiveIgnoreKeyTextOutputFormat: 读写普通HDFS文本文件. SequenceFileInputFormat/SequenceFileOutputFormat: 读写SequenceFile格式的HDFS文件. Hive 使用如下SerDe 类(反)序列化数据: MetadataTyp…

腾讯云mysql架构_一个数据库存储架构的独白

本文由云社区发表本文作者:许中清,腾讯云自研数据库CynosDB的分布式存储CynosStore负责人。从事数据库内核开发、数据库产品架构和规划。曾就职于华为,2015年加入腾讯,参与过TBase(PGXZ)、CynosDB等数据库产品研发。专注于关系数据…

Hive高级函数

Hive的函数太多了。用法和sql的差不多。 简单查询 select ... from...where... 使用各种函数 hive>show functions;//查看所有函数 hive>describe function explode;//查看函数的使用方法 LIMIT语句 列别名 嵌套select语句 标准函数: reverse() upper() ...…

groupby索引有效吗_SQL IN 一定走索引吗?

摘要IN 一定走索引吗?那当然了,不走索引还能全部扫描吗?好像之前有看到过什么Exist,IN走不走索引的讨论。但是好像看的太久了,又忘记了。哈哈,如果你也忘记了MySQL中IN是如何查询的,就来复习下吧。问题问题…

mysql函数使用场景_mysql的函数和存储过程的比较,以及在实际场景中的使用案例...

一.存储过程和函数的区别函数调用有返回值存储过程调用用call语句,函数调用直接饮用函数名参数IN,OUT,INOUT只适用于存储过程,对函数而言所有参数默认都是输入参数IN用于把数值传入到存储过程中OUT用于输出参数将数值传递给调用者…

hive性能调优

原文:http://www.tuicool.com/articles/rMvQvm ---------------------------------------------------------------------- limit 限制调整 -- 因为使用 limit 语句时候,是先执行整个查询语句,然后再返回部分结果的 set hive.limit.optimize…

推荐系统之 BPR 算法及 Librec的BPR算法实现【1】

【推荐系统之 BPR 算法】 1、关于BPR的论文原文: BPR: Bayesian Personalized Ranking from Implicit Feedback 2、参考1:论文快读 - BPR: Bayesian Personalized Ranking from Implicit Feedback (该博主的网站不错,尤其论文快…

ios 筛选_万千网友让quot;低调使用quot;的软件!居然还支持iOS

点击蓝字关注我们昨天的耳朵神器大家感觉怎么样?享受了耳朵今天我们享受一下眼睛~可能很多同学对漫画是情有独钟但是,之前小黑一直介绍的都是安卓端的软件今天要给大家介绍的这款软件是IOS安卓都有终于可以不被IOS的同学吐槽了而且经过测试小黑真的想说一…

Linux卸载/删除多余网卡

卸载 使用命令ifconfig命令查看网卡情况 确认自己使用的是哪一块网卡,然后把其它的网卡都卸载掉。 运行命令ifconfig 网卡名称 down。 如: ifconfig eth1 down 再次运行ifconfig就会发现被卸载掉的网卡没了。现在可以ping 一下内网的IP试试看能不能pin…

CentOS7:JDK1.7.0_80安装

一、安装前检查 执行以下命令: rpm -qa | grep jdk 查看系统是否已经自带openjdk,如果存在 执行以下命令: yum -y remove files files为查出的、系统自带的openjdk相关文件,运行以上命令将相关文件卸载 执行命令 java -version[rootlocalhost…

python海龟绘图画圣诞帽男人_python海龟绘图实例教程

本文以实例形式介绍了python turtle模块即海龟绘图的使用方法,对于需要进行图形编程的朋友相信会有一定的借鉴价值。python turtle模块简介:python2.6版本中引入的一个简单的绘图工具,叫做海龟绘图(turtle graphics)1.使用海龟绘图首先我们需…

spring+mybatis 多数据源整合

原文&#xff1a;http://blog.csdn.net/fhx007/article/details/12530735 ---------------------------------------------------------------------------------- 直接看spring的配置吧 <!-- 数据源配置 --> <bean id"ds1" class"org.apache.commo…

四管前级怎么去掉高低音音调_一些歌曲音调太高怎么才能唱上去??

展开全部首先得提高肺活量 然后就是练声&#xff01;怎 样 练 声&#xff1a;练声的目的1&#xff0c;使歌唱发声系统各器官的肌肉更e68a84e8a2ad62616964757a686964616f31333236373231有力&#xff0c;并能协调一致。2&#xff0c;建立正确的声音概念。3&#xff0c;扩展音域&…

python绘制星空_用python画星空源代码是什么?

用python画星空源代码是什么&#xff1f;用python画星空源代码是from turtle import *from random import random,randintscreen Screen()width ,height 800,600screen.setup(width,height)screen.title("模拟3D星空")screen.bgcolor("black")screen.mod…

Linux - xshell上传文件报错乱码

xshell上传文件报错乱码&#xff0c;解决方法 rz -be 回车 下载sz filename转载于:https://www.cnblogs.com/RzCong/p/8600899.html

java元数据是什么_用存储过程和 JAVA 写报表数据源有什么弊端?

用存储过程和 JAVA 写报表数据源有什么弊端&#xff1f;跟着小编一起来一看一下吧&#xff01;我们在报表开发中经常会使用存储过程准备数据&#xff0c;存储过程支持分步计算&#xff0c;可以实现非常复杂的计算逻辑&#xff0c;为报表开发带来便利。所以&#xff0c;报表开发…

mysql多实例安装启动_MySQL多实例安装启动

Tips&#xff1a;之前我们的一个实例是mysql3306&#xff0c;我们现在再安装一个mysql33071。和之前一样&#xff0c;创建需要的目录文件夹mkdir -p /data/mysql/mysql3307/{data,logs,tmp}创建完 就给文件授权chown -R mysql:mysql /data/mysql/mysql3307/2.进入mysql3307cd /…