Sök…


Introduktion

Små, enkla csv-filer kan byggas med bara en textredigerare. Att läsa och skriva dem eller på annat sätt bearbeta sitt innehåll görs mer effektivt med hjälp av de produkter som finns tillgängliga för ens språk eller system som du väljer.

Läsa och skriva i Python

CSV (kommaseparerade värden) är ett enkelt filformat som används för att lagra tabelldata, till exempel ett kalkylblad. Detta är ett minimalt exempel på hur man skriver och läser data i Python.

Skriva data till en CSV-fil:

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)

Läsa data från en CSV-fil:

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

Läsa och skriva i Java

Nedanstående exempel visar sätt att läsa och skriva csv-filer utan några tredjepartsbibliotek.

Skriv 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();
    }
}

Läs 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;
    }  
}

Det finns också några förkompilerade tredjepartsbibliotek som ger praktiska sätt att analysera csv-filer. Nedan följer några exempel på sådana bibliotek.

OpenCSV

OpenCSV anses vara väldigt enkelt att använda och tillhandahåller flexibla funktioner medan man analyserar CSV-filer

/** 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 tillåter också att binda posterna direkt till JavaBeans. för mer information se officiell dokumentation här .

Andra kända bibliotek inkluderar SuperCSV och CommonsCSV som ger vissa avancerade funktioner också. Mer information finns i officiell dokumentation.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow