通过pandas中的read_csv检索分隔符

时间:2017-08-17 10:18:46

标签: python pandas csv

当使用自动分隔符检测的配置来读取csv文件(pd.read_csv(file_path, sep=None))时,pandas会尝试推断分隔符(或分隔符)。

有没有办法检索此推理的结果(最终用于sep的值)?

修改

我正在寻找一种使用read_csv返回的pandas对象的方法。我使用0.20.2版的熊猫。

3 个答案:

答案 0 :(得分:6)

我认为您可以在不必导入csv的情况下执行此操作:

reader = pd.read_csv(file_path, sep = None, iterator = True)
inferred_sep = reader._engine.data.dialect.delimiter

编辑:

忘记iterator = True参数。

答案 1 :(得分:4)

如果您只想检测csv的方言(不加载数据),则可以使用内置的csv.Sniffer标准:

  

Sniffer类用于推断CSV文件的格式。

特别是sniff方法:

sniff(sample, delimiters=None)
     

分析给定的样本并返回反映的给出的Dialect子类   找到的参数。如果给出了可选的delimiters参数,则为   解释为包含可能的有效分隔符的字符串   字符。

以下是其用法示例:

with open('example.csv', 'r') as csvfile:
    dialect = csv.Sniffer().sniff(csvfile.read(1024))
    print(dialect.delimiter)

答案 2 :(得分:1)

  

csv.Sniffer

     

Sniffer类用于推断a的格式   CSV文件。

     

嗅探(样本,分隔符=无)

     

分析给定的样本并返回a   方言子类反映了找到的参数。如果是可选的   给定分隔符参数,它被解释为字符串   包含可能的有效分隔符。

  

Dialect.delimiter

     

用于分隔字段的单字符字符串。它   默认为','

import csv

sniffer = csv.Sniffer()
dialect = sniffer.sniff('first, second, third, fourth')
print dialect.delimiter