ToStringとか__str__とかをcsv出力に対応させてみたら良かった

こんにちは、kisseです。

オブジェクト指向言語使ってるとインスタンスを文字列として出力するメソッドがあります。

いまいちその使い方が分からなかったのですが、csvファイルとしてインスタンスを書き出すという使い方があることに気づきました。



csvファイルとは??

csvファイルとは、Comma-Separated Valuesの略で、カンマで値が区切られているファイル形式です。
基本的には表形式のデータを表すためのファイル形式です。

csvファイルとしての書き出しはいろいろな場面で使われます。
特に、DBからのクエリ結果や、DBへのインサート内容をcsvで作成してインサート用のプログラムを実行したりなどに便利です。
表形式のデータを表すのに便利なのて色々な用途で使えます。

どのようにメソッドを実装するか

基本的には、出力したいインスタンスの値をカンマ区切りで返すようにすれば良いです。
文字列の末尾に改行コードを入れるべきかは微妙ですが、ファイル出力のためのメソッドは、出力文字列の最後に改行コードが挿入されるので、インスタンスメソッド側では改行コードを入れる必要はないと考えます。

実装例(C#)

最近C#を使っているので、C#での実装をします。
C#では全てのクラスがToString()メソッドを持つので、それをオーバーライドして、自分の好きな形式でオブジェクトを文字列で表現することができます。

今回はPersonクラスで、ToString()メソッドでは、csv形式での出力をしましょう。

public class Person
{
    public string name { get; set; }
    public string country { get; set; }
    public int birth_year { get; set; }


    public Person()
    {
        name = "kisse";
        country = "japan";
        birth_year = 1996;
    }


    // デフォルトのToString()メソッドをオーバーライドする。  
    // 上記コンストラクタで設定した値をcsv形式で出力
    // ex.) "kisse,japan,1996"
    public override string ToString()
    {
       return name + "," + country + "," + birth_year;
    }

}



おわり

今回はcsvファイルの出力について考えました。
実際に何回か使って見たんですが、地味に便利ですね。

ぜひ色々試してみて頂けたらと思います!

最後まで読んで頂き、ありがとうございます!

あわせて読みたい