サーチ…


前書き

小さくてシンプルなcsvファイルは、テキストエディタだけで作成できます。それらを読み書きしたり、コンテンツを処理したりすることは、自分の言語や選択したシステムで利用可能な製品を使用して効率的に行われます。

Pythonでの読み書き

CSV(カンマ区切り値)は、スプレッドシートなどの表形式のデータを格納するための単純なファイル形式です。これは、Pythonでデータを書き込んで読み込む方法の最小例です。

CSVファイルへのデータの書き込み:

import csv
data = [["Ravi", "9", "550"], ["Joe", "8", "500"], ["Brian", "9", "520"]]
with open('students.csv', 'wb') as csvfile:
    writer = csv.writer(csvfile, delimiter=',')
    writer.writerows(data)

CSVファイルからデータを読み込む:

import csv
with open('students.csv', 'rb') as csvfile:
    spamreader = csv.reader(csvfile, delimiter=',',)
    for row in spamreader:
        print("Name: {} class: {} Marks: {}".format(row[0], row[1], row[2]))
output:
Name: Ravi class: 9 Marks: 550
Name: Joe class: 8 Marks: 500
Name: Brian class: 9 Marks: 520

Javaでの読み書き

以下の例は、サードパーティのライブラリを使用せずにcsvファイルを読み書きする方法を示しています。

CSVを書き込む

public void writeToCsvFile(List<String[]> thingsToWrite, String separator, String fileName){
    try (FileWriter writer = new FileWriter(fileName)){
        for (String[] strings : thingsToWrite) {
            for (int i = 0; i < strings.length; i++) {
                writer.append(strings[i]);
                if(i < (strings.length-1))
                    writer.append(separator);
            }
            writer.append(System.lineSeparator());
        }
        writer.flush();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

CSVを読む

// Allows to define custom separator
public List<String[]> readFromCsvFile(String separator, String fileName){
    try (BufferedReader reader = new BufferedReader(new FileReader(fileName))){
        List<String[]> list = new ArrayList<>();
        String line = "";
        while((line = reader.readLine()) != null){
            String[] array = line.split(separator);
            list.add(array);
        }
        return list;
    } catch (IOException e) {
        e.printStackTrace();
        return null;
    }  
}

csvファイルを解析する便利な方法を提供する、あらかじめコンパイルされた第三者のライブラリもあります。以下はそのようなライブラリの例です。

OpenCSV

OpenCSVは非常に使いやすいと考えられ、CSVファイルの解析中に柔軟な機能を提供します

/** Reading CSV **/
// Allows varied parameters through constructors to define quote character, number of lines to skip, etc.
try(CSVReader reader = new CSVReader(new FileReader("yourfile.csv"), separator)){
        List<String[]> = reader.readAll();
        // Do something with the data
}

/** Writing CSV **/
List<String[]> listToWrite= //fetch the list of string array to write;
try(CSVWriter writer = new CSVWriter(new FileWriter(fileName), separator)){
    writer.writeAll(listToWrite);
    writer.flush();
}

/** Dumping database records to CSV **/
// Initialize CSVWriter and fetch resultSet from database ...
    writer.writeAll(resultSet, includeColumnNames); 

OpenCSVではレコードをJavaBeansに直接バインドすることもできます。詳細はこちらの公式文書を参照してください。

他の既知のライブラリには、いくつかの高度な機能を同様に提供するSuperCSVおよびCommonsCSVが含まれます。詳細については、公式文書を参照してください。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow