【學術】數據處理中,如何正確地用WPS查看csv文件

【作者結論】

-- > 把文本列中的所有英文逗號替換爲中文逗號

-- > 更改文本格式爲utf-8 BOM編碼

--> 用WPS打開,成功(親測可行)


1. 如果是碼農,建議直接用notepad++查看,簡單便捷,省去無數麻煩。

2. 如果是給其他人員看,那麼需要藉助excel或者WPS:

(1)Excel的缺點:需要先把csv文件從utf-8轉碼爲ANSI,打開後中文纔不會亂碼,但是這會造成文本本身特殊符號、表情的亂碼。因此,不推薦。

(2)WPS的優點:能夠直接打開utf8格式的csv文件,無需轉碼。

二者共同的缺點都是,默認英文逗號爲分隔符。這意味着,如果你的文本某一列內部含有英文逗號,用這兩個工具打開後會發現一列文本分兩列顯示,數據極其不整齊。

如何解決:

方案一:管它三七二十一,直接把所有英文逗號統一換成中文逗號,哪怕本文是英文文本。【最推薦】

簡單版本如下:

text = dic.get('text ', "").replace(",", ",")

注意英文逗號和中文逗號的區別(其實最終在csv中都顯示爲英文逗號,但是WPS卻偏偏能識別出中文逗號,不按套路出牌的WPS,根本讀不懂!!!!)

(插入一個私貨,供作者自己使用的複雜版本如下)

def filter_text(text):
    text = text.replace("\/", "/")
    re_tag = re.compile('</?\w+[^>]*>')  # HTML標籤
    new_text = re.sub(re_tag, '', text)
    new_text = re.sub(",,,+", ",,,", new_text)  # 合併逗號
    new_text = re.sub(" +", " ", new_text)  # 合併空格
    new_text = re.sub("--+", "--", new_text)  # 合併-
    new_text = re.sub("———+", "———", new_text)  # 合併-
    return new_text

description = filter_text(d.get('description', "")).replace("\r","\t").replace("\n",".").replace(",", ",")

方案二:給文本加引號,讓WPS能識別出這是個統一的文本,如

user_id = dic.get('user_id ', "")
text = dic.get('text ', "").replace(", ", ",").replace("\"", "\'")

注意:

(1)需要把所有的"英文逗號+空格" 替換成 ”英文逗號“,否則WPS仍然認爲這個文本內部分列了.別問爲什麼,我也不知道爲什麼WPS要做如此微妙的設定。。

(2)需要把文本內部自帶的引號,統一替換爲單引號。否則WPS仍然會以引號出現的地方作爲本列的結尾。那麼後續就麻煩了,打開後你面對的仍然是亂七八糟的格式。

即便我做了如此嘗試,結果仍然匪夷所思:

WPS中,有的逗號被認爲是文本內部,有的逗號被認爲是分列符號。

但是,csv源文件中的數據十分規整,一模一樣的逗號,沒任何毛病。

讓人想摔杯子。

最後:

如果WPS打開utf8格式的文件存在亂碼,不影響分列的話,可以忍忍。

如果影響分列和整齊性,那麼試一下utf8 BOM編碼,雖然仍然顯示有亂碼,但是分列無影響了(說明此亂碼非彼亂碼)。

如何根本消除亂碼呢? 無解。

回到開頭,直接用notepad查看csv吧,用什麼WPS呢。。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章