我正在处理一些格式很差的日志文件,列分隔符是一个(经常)出现在字段中的项目,它没有被转义。例如:
sam,male,september,brown,blue,i like cats, and i like dogs
在哪里:
name,gender,month,hair,eyes,about
如您所见,about 包含列分隔符,这意味着分隔符的单个解析将不起作用,因为它将 about me 分成两个单独的列。现在用聊天系统想象一下......你可以想象我确定的问题。
那么,理论上解决这个问题的最佳方法是什么?我不是在寻找特定于语言的实现,而是更多指向正确方向的一般指针,或者关于其他人如何解决它的一些想法......而无需手动完成。
编辑:
我应该澄清一下,我的实际日志处于更糟糕的状态。到处都有这些带有分隔符的字段,我找不到任何模式。
最佳答案
如果只有最后一列有未转义的逗号,那么大多数语言对字符串拆分的实现可以限制拆分的数量,例如在 Python 中 s.split(',',5)
如果您想将文件解析为 CSV(逗号分隔值)解析器,那么我认为最好的方法是运行一个修复程序,在将其传递给 csv 解析器之前进行正确的转义。
关于解析格式错误的日志文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3951369/