在R中使用read.csv读取CSV文件失败的技术求助
解决R中读取CSV文件时的多字节字符串错误问题
看起来你在处理网页抓取的CSV数据时遇到了多字节字符串解析的问题,这类数据常带有HTML转义字符(比如错误里的<)、非标准文本限定符或者编码问题,导致基础的read.csv()无法正常解析。下面是几个针对性的解决方案,你可以逐一尝试:
指定正确的文件编码
R默认的编码可能和你的文件不匹配,这是触发多字节错误的常见原因。你可以尝试给read.csv()加上fileEncoding参数,优先试试UTF-8,不行再换GBK或ISO-8859-1:currency <- read.csv("02prepared data/scraped data kickstarter/film & video1.csv", fileEncoding = "UTF-8")如果你不确定文件编码,可以用
readr包的guess_encoding()工具检测:library(readr) guess_encoding("02prepared data/scraped data kickstarter/film & video1.csv")然后用检测到的编码值替换
fileEncoding参数即可。改用
readr包的健壮读取函数
基础的read.csv()对特殊字符和编码的兼容性较差,readr包的read_csv()能更好地处理这类问题,还会给出更清晰的错误提示,甚至自动修复一些格式问题:library(readr) currency <- read_csv("02prepared data/scraped data kickstarter/film & video1.csv")如果还是有问题,可以通过
locale参数指定编码,或者用col_types手动定义列类型,避免自动解析时出错。预处理清理特殊字符
你的数据里可能存在HTML转义字符(比如<对应<)或者多余的文本限定符("、'),可以先读取文件内容做清理,再重新读取:# 读取文件所有行内容 file_content <- readLines("02prepared data/scraped data kickstarter/film & video1.csv", warn = FALSE) # 替换HTML转义字符 file_content <- gsub("<", "<", file_content) file_content <- gsub(">", ">", file_content) # 移除多余的引号 file_content <- gsub("['\"]", "", file_content) # 将处理后的内容写入临时文件 writeLines(file_content, "temp_cleaned.csv") # 读取清理后的文件 currency <- read.csv("temp_cleaned.csv")手动指定文本限定符和分隔符
如果CSV文件用了非标准的文本限定符,你可以通过quote参数明确指定,比如文件里用单引号作为限定符:currency <- read.csv("02prepared data/scraped data kickstarter/film & video1.csv", quote = "'")要是分隔符不是逗号,也可以用
sep参数指定(比如sep = ";")。
内容的提问来源于stack exchange,提问作者Dishant Shetty
相关产品推荐
相关产品推荐

