自动检测文件中是否存在 CSV 标头
简短的问题:如何自动检测 CSV 文件的第一行中是否有标题?
详细信息:我编写了一个小型 CSV 解析引擎,该引擎将数据放入一个对象中,我可以将其作为(大约)内存中数据库进行访问。原始代码是为了使用可预测的格式解析第三方CSV而编写的,但我希望能够更广泛地使用此代码。
我正在尝试找出一种可靠的方法来自动检测CSV标头的存在,因此脚本可以决定是使用CSV文件的第一行作为键/列名称还是立即开始解析数据。由于我所需要的只是一个布尔测试,我可以在自己检查CSV文件后轻松指定一个参数,但我宁愿不必这样做(去自动化)。
我想我必须将前3个解析为?行的 CSV 文件,并查找某种模式以与标头进行比较。我正在做三个特别糟糕的案例的噩梦,其中:
- 由于某种原因,标头包含数字数据
- 前几行(或 CSV 的大部分)为空
- 标头和数据看起来太相似,无法区分它们
如果我能得到一个“最佳猜测”,并让解析器失败并出现错误,或者如果它无法决定,就发出警告,那没关系。如果这在时间或计算方面会非常昂贵(并且花费的时间比它应该节省我的时间要多),我会很乐意放弃这个想法,回到“重要的事情”上。
我正在使用PHP,但这对我来说更像是一个算法/计算问题,而不是特定于实现的问题。如果有一个简单的算法我可以使用,那就太好了。如果你能给我指出一些相关的理论/讨论,那也很棒。如果有一个巨大的库可以进行自然语言处理或300种不同类型的解析,我对此不感兴趣。