- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我现在在尝试解析 Rails 中的一些 CSV 时遇到了严重的问题。基本上我的应用程序让用户上传 CSV 文件。然后应用程序转换文件以确保它是 UTF-8 格式,然后尝试解析和处理它。但是,每当应用程序尝试解析它时,我都会收到 MalformedCSVError,指出“第 1 行非法引用”
现在我不明白的是,如果我将原始文件复制到一个新文档中并保存它,那么我就可以在 Rails 控制台上毫无问题地解析它。
如果我尝试解析原始文件,它会提示 UTF-8 编码的字符无效(该文件不是 UTF-8,因此应用程序会转换它)
如果我尝试解析应用程序已转换为 UTF-8 并将行尾更改为 LF 的文件,则无法解析。
如果我在应用程序生成的版本和我制作的复制/粘贴版本(有效)之间进行文件差异,则差异为 0,所以我真的无法弄清楚为什么一个是可解析的,而另一个不是。
有什么建议吗?我的应用正在按如下方式处理文件:
def create
@survey = Survey.new(params[:survey])
# Now we need to try and convert this to UTF-8 if it isn't already
encoded = File.read(@survey.survey_data.current_path)
encoding = CharlockHolmes::EncodingDetector.detect(encoded)
# We've got a guess at the encoding,
# so we can try and convert it but it
# may still fail so we need to handle
# that
begin
re_encoded = CharlockHolmes::Converter.convert(encoded, encoding[:encoding], 'UTF-8')
re_encoded = re_encoded.gsub(/\r\n?/, "\n")
# Now replace the uploaded file
File.open(@survey.survey_data.current_path, 'w') { |f|
f.write(re_encoded)
}
rescue ArgumentError
puts "UH OH!!!!!"
end
puts "#{@survey.survey_data.current_path}"
@parsed = CSV.read(@survey.survey_data.current_path)
结束
文件上传 gem 是 CarrierWave,如果这有什么不同的话。
请有人帮助我,因为这让我发疯!
编辑
错误说它在第 1 行。第 1 行(假设它不是从 0 开始索引)是
"Survey","RD","GarrysMDs","NigelsMDs","PaulsMDs","StephensMDs","BrinleyJ","CarolineP","DaveL","GrantR","GregS","Kent","NeilC","NicolaP","AndyC","DarrenS","DeanB","KarenF","PaulR","RichardF","SteveG","BrianG","GordonA","NickD","NickR","NickT","RayL","SimonH","EdmondH","JasonF","MikeS","SamanthaN","TimB","TravisF","AlanS","Q1","Q2","Q3","Q4","Q5","Q6","Q7","Q8PM","Q8N","Q9","Q10","Q11","Q12","Q13","Q14","Q15","Q16PM","Q16N","Q17PM","Q17N","Q18PM","Q18N","Q19","Q20","Q21","Q22","comment","Q23.1","Q23.2","Q23.3","TQ23.1","TQ23.2","VPM","VN","VQ1","VQ2","VQ3","VQ4","VQ5","VQ6","VQ7","VQ8N","VQ8PM","VQ9","VQ10","VQ11","VQ12","VQ13","VQ14","VQ15","VQ16","VQ16N","VQ16PM","VQ17","VQ17N","VQ17PM","VQ18","VQ18N","VQ18PM","VQ19","VQ20","VQ21","VQ22","VQ23.1","VQ23.2","VQ23.3","VRD","XQ16","XQ17","XQ18"
最佳答案
这真让人恼火!
原来文件有一个导致 CSV 解析器中断的 BOM。使用
加载文件CSV.open("path/to/file.csv", "rb:bom|encoding")
让它完美地解析它!很生气花了多长时间来追踪,但它现在可以工作了,现在也不需要转换为 UTF-8!
关于ruby-on-rails - MalformedCSVError 与 rails CSV (FasterCSV),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14252340/
当我尝试读取使用 Selenium WebDriver 下载的 CSV 文件时,我在第 1 行收到了一个Illegal quoting. (CSV::MalformedCSVError)。 CSV.f
已经通过CSV::MalformedCSVError: Illegal quoting in line 1 with SmarterCSV 和Rescue CSV::MalformedCsvError
我现在在尝试解析 Rails 中的一些 CSV 时遇到了严重的问题。基本上我的应用程序让用户上传 CSV 文件。然后应用程序转换文件以确保它是 UTF-8 格式,然后尝试解析和处理它。但是,每当应用程
尝试使用 Ruby CSV 解析此文件。 https://www.sec.gov/files/data/broker-dealers/company-information-about-active-
我在读取 csv 文件时遇到问题。文件来自 Windows,所以我想存在一些编码问题。我的代码如下所示: CSV.open(path, 'w', headers: :first_row, col_se
传入的数据文件包含格式错误的 CSV 数据,例如未转义的引号,以及(有效的)CSV 数据,例如包含新行的字段。如果检测到 CSV 格式错误,我想对该数据使用替代例程。 使用以下示例代码(为简单起见缩写
我在 ruby/rails 中导入此 CSV 文件时遇到问题 我得到的错误信息是这样的: Missing or stray quote in line 1 (CSV::MalformedCSVEr
在尝试解析数组、AR 模型导入等时,CSV 文件有问题似乎是一个常见问题。除了在 MS Excel 中打开并另存为 之外,我还没有找到有效的解决方案> 每天(还不够好!)。 在一个 60,000 行的
FasterCSV 在此行中引发 MalformedCSVError(非法引用): |0150|1161623|Medicamentos e genericos "EPP".|1423|PB| 这是代
Ubuntu 12.04 LTS Ruby ruby 1.9.3dev(2011-09-23 修订版 33323)[i686-linux] 轨道 3.2.9 以下是我收到的 CSV 文件的内容:
我正在尝试解析上传的 CSV 文件。这是完整的错误消息: [Worker(host:PC.local pid:69594)] Job ImportJob (id=4) FAILED (3 prior
我是一名优秀的程序员,十分优秀!