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.pswp.cn/news/539146.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/539146.shtml
英文地址,請注明出處:http://en.pswp.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 /…