我有一個函式可以讀取和處理*.csv多個資料幀中的檔案。
但是,并非所有 CSV 檔案都具有相同的分隔符。那么,python如何檢測csv檔案具有哪種型別的分隔符,然后在read_csv()函式中使用它在pandas中讀取它呢?
df = pd.read_csv(path, sep = 'xxx',header = None, index_col = 0)
uj5u.com熱心網友回復:
更新
實際上,engine='python'用作 的引數read_csv。它將嘗試自動檢測正確的分隔符。
sepstr,默認 ','
要使用的分隔符。如果 sep 為 None,則 C 引擎無法自動檢測分隔符,但 Python 決議引擎可以,這意味著 Python 的內置嗅探器工具 csv.Sniffer 將使用后者并自動檢測分隔符。此外,超過 1 個字符且與 '\s ' 不同的分隔符將被解釋為正則運算式,也會強制使用 Python 決議引擎。請注意,正則運算式分隔符容易忽略參考的資料。正則運算式示例:'\r\t'。
使用csv.Sniffer:
import csv
def find_delimiter(filename):
sniffer = csv.Sniffer()
with open(filename) as fp:
delimiter = sniffer.sniff(fp.read(5000)).delimiter
return delimiter
演示:
>>> find_delimiter('data.csv')
','
>>> find_delimiter('data.txt')
' '
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/349646.html
