今回のテーマ
こんにちは、サルモリです。
今回は下記のテーマについて書いていきます。
今回のテーマ
CsvファイルとTsvファイルの読み込み方
今回はCsvファイルとTsvファイルの読み込み方について解説します。また、Linqを使用してデータを修正するところまでやっていきたいと思います。
他のLinqの記事についてはこちら
ファイルの内容
まず、Csvファイルを読み込んでみましょう。
今回使用するCsvファイルはD:\testにrobot.csvを作成します。
ファイルを下記のように準備しました。
ファイルの中身は下記のようにします。
html
Rockman,Blue,DrLight
Fireman,Red,DrWily
Iceman,Blue,DrWily
Roll,Pink,DrLight
Airman,Blue,DrWily
このファイルを読み込みプログラムで出力してみましょう。
ファイルについての記事はこちら
ファイルの読み込み方法 Csvファイルを使いやすい形にする
ファイルの読み込み方法は別記事で一番おすすめしたreadLinesメソッドを使っていきましょう。
早速、Csvファイルのデータを使いやすい形にし出力してみます。
Csvファイルの読み込み方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
using System; using System.Collections.Generic; using System.IO; using System.Linq; namespace FileOperater { class Program { static void Main(string[] args) { String filepath = @"D:\test\robot.csv"; var robotlist = File.ReadLines(filepath).ToArray().Select(x => x.Split(',')).ToList(); foreach(var robot in robotlist) { Console.WriteLine("Name:" + robot[0] + " Color:" + robot[1] + " Maker:" + robot[2]); } } } } |
result
Name:Rockman Color:Blue Maker:DrLight
Name:Fireman Color:Red Maker:DrWily
Name:Iceman Color:Blue Maker:DrWily
Name:Roll Color:Pink Maker:DrLight
Name:Airman Color:Blue Maker:DrWily
各項目ごとにSplitメソッドで分けて、リストに格納してみました。
このようにデータを扱えば、自由にデータを取り出すことが出来ると思います。
読み込んだ内容にLinqを使ってみる
上記のデータを使って、Linqを使用してみましょう。
名前の順で出力する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
using System; using System.Collections.Generic; using System.IO; using System.Linq; namespace FileOperater { class Program { static void Main(string[] args) { String filepath = @"D:\test\robot.csv"; var robotlist = File.ReadLines(filepath).ToArray().Select(x => x.Split(',')).ToList(); var robotlist2 = robotlist.OrderBy(x => x[0]); foreach(var robot in robotlist2) { Console.WriteLine("Name:" + robot[0] + " Color:" + robot[1] + " Maker:" + robot[2]); } } } } |
result
Name:Airman Color:Blue Maker:DrWily
Name:Fireman Color:Red Maker:DrWily
Name:Iceman Color:Blue Maker:DrWily
Name:Rockman Color:Blue Maker:DrLight
Name:Roll Color:Pink Maker:DrLight
名前の順で出力されてますね。
ライト博士のロボットのみ出力する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
using System; using System.Collections.Generic; using System.IO; using System.Linq; namespace FileOperater { class Program { static void Main(string[] args) { String filepath = @"D:\test\robot.csv"; var robotlist = File.ReadLines(filepath).ToArray().Select(x => x.Split(',')); var robotlist2 = robotlist.Where(x => x[2].Contains("Light")).Select(x => x).ToList(); foreach(var robot in robotlist2) { Console.WriteLine("Name:" + robot[0] + " Color:" + robot[1] + " Maker:" + robot[2]); } } } } |
result
Name:Rockman Color:Blue Maker:DrLight
Name:Roll Color:Pink Maker:DrLight
ライト博士のロボットのみ出力できています。
ファイルの読み書きについての記事はこちら
Tsvファイルの読み込み方法
続けてTsvファイルを読み込んでみましょう。Csvファイルを格納した同じフォルダにrobot.tsvを用意しました。
ファイルの内容は下記です。
robot.tsv
Rockman Blue DrLight
Fireman Red DrWily
Iceman Blue DrWily
Roll Pink DrLight
Airman Blue DrWily
読みこみ方は基本的に同じです。ソースコードを見てみましょう。
Tsvファイルの読み込み方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
using System; using System.Collections.Generic; using System.IO; using System.Linq; namespace FileOperater { class Program { static void Main(string[] args) { String filepath = @"D:\test\robot.tsv"; var robotlist = File.ReadLines(filepath).ToArray().Select(x => x.Split('\t')); foreach(var robot in robotlist) { Console.WriteLine("Name:" + robot[0] + " Color:" + robot[1] + " Maker:" + robot[2]); } } } } |
result
Name:Rockman Color:Blue Maker:DrLight
Name:Fireman Color:Red Maker:DrWily
Name:Iceman Color:Blue Maker:DrWily
Name:Roll Color:Pink Maker:DrLight
Name:Airman Color:Blue Maker:DrWily
変わった箇所はSplitメソッドの指定が変更されただけですね。
まとめ
今回はCsvファイルとTsvファイルの読み込み方法を紹介しました。
読み込み方法は他にもありますが、私はこの読み込み方法が一番おすすめです。
是非、活用してくださいね。
CHECK
-
【C# sharp Linq】GroupByを使ってグループ化しよう。
ChatGPTのAPIを使わずに自動化することが可能です。 下記の本を読めば、ChatGPT4でも料金掛からずに自動化できます!KindleUnlimited会員であれば無料で読めます。 今回のテーマ ...
続きを見る
他のLinqの記事についてはこちら