读取CSV文件
例如下面是个CSV文件。
"123","10"","qwe",
"456","24"","asd",
然后通过Java读取它,得到结果
123 10" qwe
456 24" as
知道可以改这个csv文件为下面这样可以,我想知道的是不改文件可以吗?
"123","10""","qwe",
"456","24""","asd",
读取CSV文件
例如下面是个CSV文件。
"123","10"","qwe",
"456","24"","asd",
然后通过Java读取它,得到结果
123 10" qwe
456 24" as
知道可以改这个csv文件为下面这样可以,我想知道的是不改文件可以吗?
"123","10""","qwe",
"456","24""","asd",
该回答引用chatgpt:
可以通过代码来处理带双引号的字段数据。具体步骤如下:
1.读取CSV文件时,一行一行地读取,并将每行数据用逗号分隔开。
2.对于每个字段数据,如果它以双引号开头,则需要将其与下一个字段数据进行拼接,直到找到以双引号结尾的字段数据。
3.如果拼接的过程中遇到双引号,则需要忽略该双引号,因为它是用来转义的。
4.拼接完整个字段数据后,将其中的双引号都去掉。
下面是一个Java代码示例,演示了如何处理带双引号的字段数据:
public static List<String[]> readCsvFile(String fileName) {
List<String[]> dataList = new ArrayList<>();
try (BufferedReader br = new BufferedReader(new FileReader(fileName))) {
String line;
while ((line = br.readLine()) != null) {
String[] fields = line.split(",");
List<String> tempList = new ArrayList<>();
for (int i = 0; i < fields.length; i++) {
String field = fields[i];
if (field.startsWith("\"")) {
StringBuilder sb = new StringBuilder();
sb.append(field);
while (i < fields.length - 1 && !field.endsWith("\"")) {
i++;
field = fields[i];
sb.append(",").append(field);
}
field = sb.toString();
}
field = field.replaceAll("\"", "");
tempList.add(field);
}
dataList.add(tempList.toArray(new String[0]));
}
} catch (IOException e) {
e.printStackTrace();
}
return dataList;
}
以上示例代码使用Java的BufferedReader逐行读取CSV文件,然后使用String.split()方法将每行数据按逗号分隔开。在处理每个字段数据时,如果发现以双引号开头,则需要将其与下一个字段数据进行拼接。拼接完整个字段数据后,将其中的双引号都去掉,并将处理后的数据存入一个List中。最后将整个List返回。