首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我需要读取CSV文件,并针对每列将它们拆分为不同的数组

问我需要读取CSV文件,并针对每列将它们拆分为不同的数组
EN

Stack Overflow用户
提问于 2012-06-24 04:47:01
回答 2查看 2K关注 0票数 0

我有一个非常大的数据文件,大约有60000行。我需要根据列将CSV文件拆分为每列的不同数组。

我有5列:State, County, Zipcode, Latitude, Longitude。

当我读取文件时,如何拆分它并按顺序将它们添加到每个数组中?

我会有一个用于State, County, Zipcode, Latitude和Longitude的数组。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-24 04:48:58

使用CSV解析器-有很多用于.NET的解析器,甚至在VisualBasic名称空间中也有内置解析器。

参见TextFieldParser -尽管在VisualBasic名称空间中,它是一个常规的.NET库,可以由任何.NET语言使用。

这里有many other options。

票数 2
EN

Stack Overflow用户

发布于 2012-06-24 05:16:07

如果你想手动完成(我也推荐使用TextFieldParser),你可以使用一个StreamReader来循环所有行,并使用String.Split来分割你的分隔符(假设逗号):

代码语言:javascript
复制
var stateList = new List<String>();
var countyList = new List<String>();
var zipCodeList = new List<String>();
var latitudeList = new List<String>();
var longitudeList = new List<String>();

using (var reader = new System.IO.StreamReader(@"C:\Temp\csv.txt"))
{
    string line;
    while ((line = r.ReadLine()) != null)
    {
        var fields = line.Split(new Char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
        stateList.Add(fields[0]);
        if (fields.Length > 1)
            countyList.Add(fields[1]);
        if (fields.Length > 2)
            zipCodeList.Add(fields[2]);
        if (fields.Length > 3)
            latitudeList.Add(fields[3]);
        if (fields.Length > 4)
            longitudeList.Add(fields[4]);
    }
}

如果您确实需要一个数组而不是一个列表:

代码语言:javascript
复制
String[] states = stateList.ToArray();
String[] counties = countyList.ToArray();
String[] zipCodes = zipCodeList.ToArray();
String[] latitudes = latitudeList.ToArray();
String[] longitudes = longitudeList.ToArray();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11172857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档