在ruby中解析大型CSV文件的最佳方法是什么。我的CSV文件将近1 GB。我想根据某些条件以CSV格式过滤数据。
答案 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