您可能已经看过这个相关的 SO 问题,其中列出了好的策略,例如计算潜在分隔符出现的次数,和/或在使用假设分隔符时验证每行具有相同的列数。
不幸的是,绝对确定性是不可能的,因为该格式不包含在文件中明确指定分隔符的方法。我认为使其尽可能通用的最佳解决方案是让用户指定它何时不是逗号(这就是 opencsv 处理它的方式),或者如果您或他们确定,则允许客户端指定分隔符自动检测失败。如果这不能是交互式的,那么我认为你能做的最好的事情就是记录你认为失败的案例,以便他们稍后处理。
另外,我认为错误率会低于您的预期。我的猜测是,99% 的情况下分隔符都是逗号、分号、句点或制表符。不幸的是,我看到懒惰的编码人员在假设数据不包含字段的情况下使用脱字符号、竖线或波形符之类的东西来分隔字段,因此他们不必进行适当的转义。但这不是常态,也不应该将其视为 CSV。
Python csv 模块有一个Sniffer类,它可以猜测分隔符(用户提供候选列表);你可能想看看它的实现。