CSV文件的转义处理
2011-12-22 13:57
357 查看
CSV文件是一种适合程序格式化输出数据的文件格式。它使用英文逗号作为列分隔符,文件可以直接用Excel打开。CSV的规则简单,便于程序输出;Excel对CSV的兼容性使得我们可以非常轻松的使用Excel提供的所有强大功能。
唯一需要注意的地方就是CSV是使用英文逗号作为列分隔符的,所以当你输出的文本中含有英文逗号时就会被CSV认为是列分隔符,从而使得文件的现实格式与预想中的不同。因此,我们需要对内容进行转义。
网上可以得到的关于CSV的转义大致可以总结为:
1. 如果一个单元内含有逗号,那么用半角双引号将内容包含,其中的逗号将不被识别为列分隔符;
2. 如果原内容中出现了半角双引号,便是用两个半角双引号转义。
但是在实际操作中,就会发现如果某个单元内出现多个逗号,双引号,我们的规则便不对了。例如:
test,ma, "ma, ""go"", ""go"",""go"""
我们希望的输出格式是三列,但是Excel会显示为六列。我们的转义字符失效了。
之所以如此,通过我的分析,我认为CSV将每个逗号之间的内容作为首要参考标准。如果用逗号作分隔是可行的,那么Excel将不会做任何更多的处理。
看一个更简单的例子:
test,ma, "woshima, sldkl",
我们希望将其显示为三列,但是结果却是四列:
由此可见,网上流传的转移规则并不完全。其根本原因在于,CSV只是一个技术规范,不同的程序对其有不同的支持;而且CSV本身的规范也是相当繁琐(http://zh.wikipedia.org/zh-cn/CSV )。如果希望用程序去实现这样的规范,那么CSV的简单性的优势将不复存在。
好了,说到这里,我们应该怎么做呢? 我个人认为,最好的办法就是规定一个特殊的字符串作为英文逗号的转义字符。
这样就一了百了。
唯一需要注意的地方就是CSV是使用英文逗号作为列分隔符的,所以当你输出的文本中含有英文逗号时就会被CSV认为是列分隔符,从而使得文件的现实格式与预想中的不同。因此,我们需要对内容进行转义。
网上可以得到的关于CSV的转义大致可以总结为:
1. 如果一个单元内含有逗号,那么用半角双引号将内容包含,其中的逗号将不被识别为列分隔符;
2. 如果原内容中出现了半角双引号,便是用两个半角双引号转义。
但是在实际操作中,就会发现如果某个单元内出现多个逗号,双引号,我们的规则便不对了。例如:
test,ma, "ma, ""go"", ""go"",""go"""
我们希望的输出格式是三列,但是Excel会显示为六列。我们的转义字符失效了。
test | ma | "ma | ""go"" | ""go"" | ""go""" |
看一个更简单的例子:
test,ma, "woshima, sldkl",
我们希望将其显示为三列,但是结果却是四列:
test | ma | "woshima | sldkl" |
好了,说到这里,我们应该怎么做呢? 我个人认为,最好的办法就是规定一个特殊的字符串作为英文逗号的转义字符。
这样就一了百了。
相关文章推荐
- CSV文件的转义处理
- 《Python 编程快速上手 — 让繁琐工作自动化》读书笔记之【第14章 处理CSV文件和JSON数据】
- JAVA处理CSV格式文件-javacsv.jar
- python处理文件(.csv)
- Python使用pandas处理CSV文件
- C#导出数据到CSV和EXCEL文件时数字文本被转义的解决方法
- 用Excel打开csv文件时,如何处理数字内容展现会自动转换格式的问题
- .NET处理CSV文件 插件CSVReader
- 正则表达式分割字符串但是不分割字符串中引号中间的数据,处理CSV文件必备!!
- ean13码的生成,python读取csv中数据并处理返回并写入到另一个csv文件中
- 导出csv文件时,处理分隔符问题
- csv文件处理
- python对csv文件的处理
- (原创)关于如何处理EXCEL( CSV)文件 导入数据库的解决方法!!
- python处理.csv文件
- Ruby--如何处理csv文件?
- node.js 读取csv文件数据处理导入mongodb 数据库
- Java编程的逻辑 (64) - 常见文件类型处理: 属性文件/CSV/EXCEL/HTML/压缩文件
- CSV写入文件追加新的内容,文件编码处理
- csv格式的文件上传下载时,逗号列的处理