[英]Read, parse and then write a CSV in Java
我試圖讀取一個csv文件,對其進行解析,然后使用解析后的數據寫入一個新的csv。
我的輸入.csv文件如下所示:
[Altice<SPLIT> France<SPLIT>
nNUMFP<SPLIT> 4.875<SPLIT> 19<SPLIT> 99.875<SPLIT>-<SPLIT>100.375<SPLIT> 4.909<SPLIT>/<SPLIT>4.752<SPLIT> 371.<SPLIT>/<SPLIT>371.<SPLIT> 2.4MMM<SPLIT> B+<SPLIT> Ba3<SPLIT>
nNUMFP<SPLIT> 6<SPLIT> 22<SPLIT> 102.000<SPLIT>-<SPLIT>102.500<SPLIT> 5.559<SPLIT>/<SPLIT>5.450<SPLIT> 422.<SPLIT>/<SPLIT>411.<SPLIT> 4MMM<SPLIT> B+<SPLIT> Ba3<SPLIT>
nNUMFP<SPLIT> 6.25<SPLIT> 24<SPLIT> 103.000<SPLIT>-<SPLIT>103.750<SPLIT> 5.741<SPLIT>/<SPLIT>5.616<SPLIT> 420.<SPLIT>/<SPLIT>407.<SPLIT> 1.375M<SPLIT> B+<SPLIT> Ba3<SPLIT>
nAltice<SPLIT> S.A.<SPLIT>
nATCNA<SPLIT> 7.75<SPLIT> 22<SPLIT> 103.250<SPLIT>-<SPLIT>104.000<SPLIT> 7.005<SPLIT>/<SPLIT>6.837<SPLIT> 568.<SPLIT>/551.<SPLIT> 2.9MMM<SPLIT> B<SPLIT> B3<SPLIT>
nATCNA<SPLIT> 7.625<SPLIT> 25<SPLIT> 101.875<SPLIT>-<SPLIT>102.375<SPLIT> 7.309<SPLIT>/<SPLIT>7.227<SPLIT> 573.<SPLIT>/<SPLIT>565.<SPLIT> 1.48MM<SPLIT> N.A.<SPLIT> B3e<SPLIT>
n
我的代碼是:
public class TokenizerParser {
public static void main(String[] args) throws Exception {
//Build reader instance
CSVReader reader = new CSVReader(new FileReader("rawtest.csv"), ',', '"', 1);
CSVWriter writer = new CSVWriter(new FileWriter(csv));
//Read all rows at once
List<String[]> allRows = reader.readAll();
//Read CSV line by line and use the string array as you want
for(String[] row : allRows){
String changedString = Arrays.toString(row).replace("[", ""); // This is an example for parsing
System.out.println(changedString);
}
// Here I do not know what to do to write the parsed data back to a .csv
for(String[] output : allRows) {
}
}
}
因此,我可以讀取和執行解析操作,但是如何將在控制台中從System.out.println(changedString)中看到的解析后的字符串寫入新的.csv文件中呢?
非常感謝您的幫助!
您將在本地將解析/更改的String保存在for循環中。 如果將此字符串保存到另一個列表,則可以在以后重用。
List<String> parsedStrings = new ArrayList<>();
for(String[] row : allRows){
String changedString = Arrays.toString(row).replace("[","");
parsedsString.add(changedString);
}
嘗試這個:
for(String[] output : allRows) {
//get current row
String[] parsedRow=new String[output.length];
for(int i=0;i<output.length;i++){
//parse each column
parsedRow[i]=output[i].replace("[", "");
}
//write line
writer.writeNext(parsedRow);
}
writer.close();
嘗試Super CSV ,它功能強大而強大。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.