0

約60000行の非常に大きなデータファイルがあります。列に基づいてCSVファイルを列ごとに異なる配列に分割する必要があります。

私は5つの列を持っています。State, County, Zipcode, Latitude, Longitude

ファイルを読み取るときに、ファイルを分割して各配列に順番に追加するにはどうすればよいですか?

State, County, Zipcode, Latitude、、およびの配列がありLongitudeます。

4

2 に答える 2

2

CSVパーサーを使用します-.NETには、VisualBasic名前空間に組み込まれているものも含めて、たくさんあります。

を参照してくださいTextFieldParser。ただし、VisualBasic名前空間では、任意の.NET言語で使用できる通常の.NETライブラリです。

他にも多く オプションがあります。

于 2012-06-23T20:48:57.887 に答える
0

手動で行いたい場合 ( を使用することもお勧めしますTextFieldParser)、 a を使用しStreamReaderてすべての行をループString.Splitし、セパレーターで分割するために使用できます (コンマを想定):

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]);
    }
}

リストではなく配列が本当に必要な場合:

String[] states = stateList.ToArray();
String[] counties = countyList.ToArray();
String[] zipCodes = zipCodeList.ToArray();
String[] latitudes = latitudeList.ToArray();
String[] longitudes = longitudeList.ToArray();
于 2012-06-23T21:16:07.280 に答える