当使用自动分隔符检测的配置来读取csv文件(pd.read_csv(file_path, sep=None)
)时,pandas会尝试推断分隔符(或分隔符)。
有没有办法检索此推理的结果(最终用于sep
的值)?
修改
我正在寻找一种使用read_csv
返回的pandas对象的方法。我使用0.20.2版的熊猫。
答案 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