在ruby中解析大型CSV文件的最佳方法

时间:2019-11-17 15:16:18

标签: ruby csv

在ruby中解析大型CSV文件的最佳方法是什么。我的CSV文件将近1 GB。我想根据某些条件以CSV格式过滤数据。

1 个答案:

答案 0 :(得分:2)

您没有具体说,但我认为大多数评论的人都认为这很可能是一个作业问题。如果是这样,您应该阅读“ How do I ask and answer homework questions?”。如果没有,请阅读“ How do I ask a good question?”。

正如G4143在评论中所述,Ruby具有出色的CSV class,应符合您的需求。

以下是使用 var progressBar = new Android.Widget.ProgressBar(_context, null, Android.Resource.Attribute.ProgressBarStyleHorizontal); Control.SetWebViewClient(new CusWebViewClient($"javascript: {JavascriptFunction}")); Control.SetWebChromeClient(new CusWebChromeClient(progressBar)); Control.AddView(progressBar); 的几个简单示例,文档将其描述为读取CSV文件的主要方法。该方法一次从文件中读取一行,因此它应适用于大文件。这是一个基本示例,说明如何使用它过滤掉一部分Csv记录,但我鼓励您阅读CSV类文档并进行后续处理,并提出更具体的问题,以显示到目前为止遇到的问题

基本思想是从一个空数组开始,使用public class CusWebChromeClient : WebChromeClient { Android.Widget.ProgressBar progressBar; public CusWebChromeClient(Android.Widget.ProgressBar progressBar) { this.progressBar = progressBar; } public override void OnProgressChanged(Android.Webkit.WebView view, int newProgress) { if (newProgress < 100 && progressBar.Visibility == ViewStates.Gone) { progressBar.Visibility = ViewStates.Visible; } progressBar.SetProgress(newProgress, true); if (newProgress == 100) { //progressBar.Visibility = ViewStates.Gone; } } } 获取每一行,如果该行符合您的过滤条件,则将其添加到最初为空的过滤结果数组中。

test.csv:

foreach

foreach

如果文件的第一行是“标题”,则可以传入一个选项来将其视为这样:

a, b, c
1,2,3


4,5,6