如何检查CSV文件是否以逗号或分号作为分隔符? [英] How to check if CSV file has a comma or a semicolon as separator?

查看:40
本文介绍了如何检查CSV文件是否以逗号或分号作为分隔符?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我必须自动读入大量CSV文件。有些使用逗号作为分隔符,然后我使用命令read.csv()

有些使用分号作为分隔符,然后我使用read.csv2()

我要编写一段代码来识别CSV文件是以逗号还是分号作为分隔符(在我读取它之前),这样我就不必每次都更改代码。

我的方法是这样的:

try to read.csv("xyz")
if error 
read.csv2("xyz")

这样的事情有可能吗?以前有人这么做过吗? 我如何检查是否存在错误,而不实际看到它?

推荐答案

以下几种方法假定文件格式之间的唯一区别是分隔符是分号且小数是逗号,还是分隔符是逗号且小数点是点。

1)Fread如data.table包中的注释fread所述,将自动检测常用分隔符的分隔符,然后使用检测到的分隔符读取文件。这还可以处理某些其他格式更改,例如自动检测文件是否有标题。

2)grepl查看第一行是否有逗号或分号,然后重新读取文件:

L <- readLines("myfile", n = 1)
if (grepl(";", L)) read.csv2("myfile") else read.csv("myfile")

3)count.field我们可以假定使用分号,然后计算第一行中的字段。如果有一个字段,则用逗号分隔,如果没有,则用分号分隔。

L <- readLines("myfile", n = 1)
numfields <- count.fields(textConnection(L), sep = ";")
if (numfields == 1) read.csv("myfile") else read.csv2("myfile")

更新添加了(3)个,并对全部三个进行了改进。

这篇关于如何检查CSV文件是否以逗号或分号作为分隔符?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆