CSV 文件解析

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: <p>介绍</p> <p>    在很多时候,数据是以CSV文件格式存放的。在提取CSV数据时,我们借助javacsv这个开源工具来处理,还是比较方便。</p> <p><br></p> <p>javacsv in pom.xml of Maven<br></p> <p></p> <pre code_snippet_id="387236" snippet_file_name="bl

介绍

    在很多时候,数据是以CSV文件格式存放的。在提取CSV数据时,我们借助javacsv这个开源工具来处理,还是比较方便。


javacsv in pom.xml of Maven

		<dependency>
			<groupId>net.sourceforge.javacsv</groupId>
			<artifactId>javacsv</artifactId>
			<version>2.0</version>
		</dependency>


import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;

import util.CommonTool;

import com.csvreader.CsvReader;

/**
 * @author shengshu
 * 
 */
public class CsvCmHandle {
	private static final Logger logger = LogManager.getLogger(CsvCmHandle.class);

	private static Map<String, Map<String, String>> cmMap = new ConcurrentHashMap<String, Map<String, String>>();

	/**
	 * *
	 * <p>
	 * Read CSV file and store records into Map.
	 * 
	 * @param csvFilePath
	 * @return
	 */
	public static Map<String, Map<String, String>> csvCmHandle(String csvFilePath) {
		logger.info("CSV File: " + csvFilePath);

		Map<String, String> cmRecordMap = null;
		String fileName = FilenameUtils.getBaseName(csvFilePath);

		try {
			CsvReader csvReader = new CsvReader(csvFilePath);

			csvReader.readHeaders();

			// Get CSV header array
			String[] csvHeaderArray = csvReader.getHeaders();

			// Ignore the headers when start to read records
			while (csvReader.readRecord()) {
				String[] csvRecordValueArray = csvReader.getValues();
				int csvRecordValueArrayLength = csvRecordValueArray.length;

				StringBuilder lineRecordStringBuilder = new StringBuilder();

				for (int index = 0; index < csvRecordValueArrayLength; index++) {
					lineRecordStringBuilder.append(csvRecordValueArray[index]);
				}

				// Continue next cycle when it's empty record
				if (StringUtils.trimToEmpty(lineRecordStringBuilder.toString()).equals("")) {
					break;
				}

				int csvHeaderArrayLength = csvHeaderArray.length;
				cmRecordMap = new ConcurrentHashMap<String, String>();

				for (int index = 0; index < csvHeaderArrayLength; index++) {
					String fieldName = csvHeaderArray[index];

					String fieldValue = StringUtils.trimToEmpty(CommonTool.convertReserveSymbel(csvReader.get(fieldName), false));
					logger.info("Field Name = Value: " + fieldName + " = " + fieldValue);

					// Put fieldName(Key) and fieldValue(Value) into Map as one record
					cmRecordMap.put(fieldName, fieldValue);
				}
			}

			csvReader.close();

			// Store entire CSV records into Map(Key: fileName; Value: recordMap)
			cmMap.put(fileName, cmRecordMap);
		} catch (FileNotFoundException fnfe) {
			fnfe.printStackTrace();
		} catch (IOException ioe) {
			ioe.printStackTrace();
		}

		return cmMap;
	}
}


相关文章
|
1月前
|
数据处理 开发者 Python
Python 高级编程:深入解析 CSV 文件读取
在Python中,读取CSV文件是数据处理的重要环节。本文介绍了两种高效方法:一是利用pandas库的`read_csv`函数,将CSV文件快速转换为DataFrame对象,便于数据操作;二是通过csv模块的`csv.reader`按行读取CSV内容。此外,还涉及了如何选取特定列、解析日期格式、跳过指定行以及分块读取大文件等高级技巧,帮助开发者更灵活地处理各种CSV文件。参考链接:&lt;https://www.wodianping.com/app/2024-10/48782.html&gt;。
84 6
|
12月前
|
存储 Python
【可定制、转换时间戳】解析nc文件,并保存为csv文件
【可定制、转换时间戳】解析nc文件,并保存为csv文件
486 4
|
6月前
|
分布式计算 Java 大数据
MaxCompute产品使用合集之大数据计算MaxCompute外部表映射了oss中的csv文件,看到"\N"被解析为"N",是什么原因
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
Java 开发工具 git
java解析CSV文件三种方法(openCSV)
java解析CSV文件三种方法(openCSV)
207 0
|
数据采集
【详细步骤解析】爬虫小练习——爬取豆瓣Top250电影,最后以csv文件保存,附源码
【详细步骤解析】爬虫小练习——爬取豆瓣Top250电影,最后以csv文件保存,附源码
309 0
简单的csv文件解析
csv文件的结构很简单,最基本的规则,就是用逗号分隔每一个单元格,用换行( 或者 )分隔每一列。其中需要注意的就是双引号为特殊的转义字符。详细的csv文件格式定义,在rfc4180中,主要的定义为: file = [header CRLF] record *(CRLF record) [CRLF]
3856 0
|
26天前
|
缓存 Java 程序员
Map - LinkedHashSet&Map源码解析
Map - LinkedHashSet&Map源码解析
60 0
|
26天前
|
算法 Java 容器
Map - HashSet & HashMap 源码解析
Map - HashSet & HashMap 源码解析
49 0

推荐镜像

更多