約60000行の非常に大きなデータファイルがあります。列に基づいてCSVファイルを列ごとに異なる配列に分割する必要があります。
私は5つの列を持っています。State, County, Zipcode, Latitude, Longitude
。
ファイルを読み取るときに、ファイルを分割して各配列に順番に追加するにはどうすればよいですか?
State, County, Zipcode, Latitude
、、およびの配列がありLongitude
ます。
CSVパーサーを使用します-.NETには、VisualBasic
名前空間に組み込まれているものも含めて、たくさんあります。
を参照してくださいTextFieldParser
。ただし、VisualBasic
名前空間では、任意の.NET言語で使用できる通常の.NETライブラリです。
手動で行いたい場合 ( を使用することもお勧めします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();