Java读写CSV文件以及解决split分割单元格内英文逗号的问题

scala/java等其他语言从CSV文件中读取数据,使用逗号‘,‘分割可能会出现的问题 众所周知,csv文件默认以逗号“,”分割数据,那么在scala命令行里查询的数据: 可以看见,字段里就包含了逗号“,”,那接下来切割的时候,这本应该作为一个整体的字段会以逗号“,”为界限进行切割为多个字段。 现在来看看这里的_c0字段一共有多少行记录。 记住这个数字:60351行 写scala代码读取csv文件并以逗号为分隔符来分割字段 val lineRDD = sc.textFile("xxxx/xxx.csv").map(_.split(",")) 这里只读取了_c0一个字段,否则会报数组下标越 阅读详情

.CSV文件是以逗号分割的数据仓储,读取数据时从每一行中读取一条数据元祖,也就是一条数据,再用字符分割的方式获取表中的每一个数据项。

package com.conn.csv;  

import java.io.BufferedReader;    
import java.io.FileReader;    

/** 
 * @desc: 读取csv文件 
 * @author: tzconn@163.com 
 * @time: 2018年3月22日16:22:41
 */  

public class TestRead {    

    public static void main(String[] args) {    
        try {    
            BufferedReader reader = new BufferedReader(new FileReader("*.csv"));//换成你的文件名   
            reader.readLine();//第一行信息,为标题信息,不用,如果需要,注释掉   
            String line = null;    
            while((line=reader.readLine())!=null){    
                String item[] = line.split(",");//CSV格式文件为逗号分隔符文件,这里根据逗号切分   

                String last = item[item.length-1];//这就是你要的数据了   
                //int value = Integer.parseInt(last);//如果是数值,可以转化为数值   
                System.out.println(last);    
            }    
        } catch (Exception e) {    
            e.printStackTrace();    
        }    
    }    

}

写入数据则注意数据逗号分隔的格式,以文件写入的方式即可。

package com.conn.csv;    

import java.io.BufferedWriter;    
import java.io.File;    
import java.io.FileNotFoundException;    
import java.io.FileWriter;    
import java.io.IOException;    

/** 
 * @desc: 写入数据到csv文件 
 * @author: tzconn@163.com 
 * @time: 2018年3月22日16:26:32
 */  

public class WriteCSV {    

  public static void main(String[] args) {    
    try {    
      File csv = new File("D:/writers.csv"); // CSV数据文件   

      BufferedWriter bw = new BufferedWriter(new FileWriter(csv, true)); // 附加   
      // 添加新的数据行   
      bw.write("\"张三\"" + "," + "\"2000\"" + "," + "\"2004\"");    
      bw.newLine();    
      bw.close();    
    } catch (FileNotFoundException e) {    
      // File对象的创建过程中的异常捕获   
      e.printStackTrace();    
    } catch (IOException e) {    
      // BufferedWriter在关闭对象捕捉异常   
      e.printStackTrace();    
    }    
  }    
}

以上内容参考自博客:https://blog.youkuaiyun.com/tzconn/article/details/79655892

在读取CSV文件并以“,”切割的时候,会出现一个问题:如果单元格内容中含有英文的逗号,那就会把单元格内的内容也切割开,解决办法如下:

String item[] = line.trim().split(",(?=([^\\\"]*\\\"[^\\\"]*\\\")*[^\\\"]*$)",-1);

这个正则表达式的含义是避免切割英文双引号内的英文逗号,原因是因为csv文件的单元格中有英文逗号的话,单元格的内容实际上是会被英文双引号包括起来。这个双引号使用excel打开的时候是看不到的,但是如果读进程序里就可以看到了(或者使用notepad++这样的编辑器打开也可以看到),所以我们可以使用这个正则表达式来解决切分单元格内容的问题。

Java String.split()底层原理与高并发实战避坑指南 字符串分割是Java开发中最基础的文本处理操作,其核心依赖于正则匹配与字面量快速路径的双模式引擎机制。理解split()如何基于Pattern编译、limit参数对空字符串的截断逻辑,以及JVM中String的LATIN1/UTF-16存储差异,是保障系统稳定性的关键。该机制直接影响CSV解析、HTTP头处理、日志结构化等高频场景的正确性与性能。尤其在支付网关、风控引擎等高并发系统中,不当使用split()易引发数据错位、GC飙升与正则回溯等线上故障。本文结合OpenJDK 17源码与JMH实测,深入剖析s 阅读详情

相关推荐

Java字符串转数组的五种方案与split()底层陷阱解析

字符串转数组是Java基础操作,本质涉及String不可变性、正则引擎匹配、数组内存分配等核心机制。其原理不仅限于API调用,更关联JVM对Pattern编译、Matcher执行及空字符串语义的处理逻辑。技术价值在于保障日志解析、配置加载、协议解包等关键链路的数据完整性与性能稳定性。典型应用场景包括CSV字段切分、URL参数提取、SKU属性解析等高可靠性要求的系统模块。深入理解split()的limit参数行为、正则转义规则及Guava/Splitter等替代方案,是规避线上空值丢失、OOM和安全风险的关键

weixin_30338481的博客 309

解决上传CSV文件时,用split()无法解决数据中的逗号“,“分割问题

java解决上传csv文件中数据的逗号

tangjiaojiao123的博客 3013

Java爬虫入门实战:手把手教你抓取豆瓣电影Top250数据

网络爬虫作为数据采集的核心技术,其基本原理是通过模拟HTTP请求获取网页内容,再解析HTML结构提取目标信息。这项技术对于数据分析、市场研究等领域具有重要价值,是实现自动化信息收集的基础。在Java生态中,Jsoup库因其简洁的API和强大的HTML解析能力,成为静态页面爬取的理想选择。通过一个结构清晰、数据规整的实战项目,开发者可以系统掌握从请求发送、数据解析到文件存储的完整流程。本文以豆瓣电影Top250榜单为例,详细讲解如何使用Jsoup进行HTML解析和分页处理,并借助Apache Commons

weixin_30470643的博客 389

java读取csv文件的多种方式

csv文件的介绍 以下是来自百度百科的介绍 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。通常都是纯文本文件。建议使用WORDPAD或是记事本来

将来不可预知,每一次选择毕竟是你做出的 3万+

DataCamp Workspace:SQL学习者的免配置沙盒实战指南

SQL 是数据查询与分析的核心语言,其本质在于描述‘数据在哪、如何关联、怎样聚合’的逻辑。掌握 SELECT、JOIN、GROUP BY 等基础语法后,真正的学习瓶颈往往不是语法本身,而是环境配置——数据库连接失败、CSV 编码错误、驱动版本冲突等‘环境噪音’严重干扰初学者的思维连贯性。DuckDB 作为嵌入式 OLAP 引擎,凭借毫秒级启动、零依赖部署和标准 SQL 兼容性,成为教学与轻量分析的理想执行层。DataCamp Workspace 正是基于 DuckDB 构建的浏览器内 SQL 沙盒,实现上传

weixin_34067102的博客 358

PowerShell字符串替换实战:从基础到批量处理与编码问题解决

在数据处理与自动化运维中,字符串替换是一项基础且高频的操作,其核心原理是通过模式匹配定位并修改文本中的特定内容。掌握高效的字符串处理技术能极大提升脚本的自动化能力和工程效率,广泛应用于配置文件更新、日志清洗、代码重构等场景。PowerShell作为Windows生态下的强大脚本环境,其对象化管道和内置的正则表达式支持,为字符串替换提供了精准控制与复杂逻辑处理能力。本文聚焦PowerShell的-replace运算符、Get-Content与Set-Content的配合使用,深入探讨了包括**批量文件处理**

weixin_33826609的博客 281

java生成csv文件时,某数据含有逗号,双引号的分割问题

解决思路: 某字符含有逗号时,将该字符用双引号引起来,那么字符里的逗号将不会被解析; 含有双引号时,可替换为两个双引号 public String handleCsvComma(String str) { String handleStr=str; //先判断字符里是否含有逗号 if(str.contains(",")){ //如果还有双引号,先将双引号转义,避...

weixin_39456915的博客 4634

C++字符串处理实战:5道核心编程题解析与避坑指南

字符串处理是编程的基石,涉及文本解析、数据清洗等核心场景。其原理在于对字符序列的高效操作,包括遍历、查找、修改与转换。掌握字符串处理技术能显著提升代码的健壮性与性能,在数据处理、系统开发等领域应用广泛。本文聚焦C++ std::string,通过解析字符串反转、回文判断、分割、转换及最长无重复子串等高频问题,深入探讨内存管理、迭代器安全及性能优化等关键点。针对字符处理函数的安全隐患和滑动窗口等算法,提供工程实践中的避坑指南与优化思路,帮助开发者夯实基础,应对实际开发挑战。

迷彩风情 372

解决Java导出csv文件数据中包含逗号导致乱行的问题

最近要做csv文件的导出,因为csv文件是用逗号隔开的文本文件,用excel打开csv文件的时候会按逗号分单元格。导致导出来的数据有的包含逗号的被隔开在多个单元格里面。 解决方式: 把数据中的逗号加上双引号,就可以避免被解析,可以防止上面的问题出现。 String value =json.getString(title); if(json.getString(title).contains(",")) { value = "\""+value+"\"";

z710757293的博客 8210

Java字符串数组转字符串的5种方案与生产级实践

字符串数组拼接是Java基础编程中的高频操作,其本质涉及字符串不可变性、内存分配机制与字符编码规范。理解String.join()、StringBuilder循环、Stream.collect()等方案的底层原理,有助于规避NPE、OOM及编码解析异常等典型问题。在电商订单导出、日志聚合、SQL动态构造等真实场景中,需综合权衡null处理策略、分隔符语义、预分配容量与线程安全需求。本文结合JDK8+特性与Apache Commons Lang工具,系统解析性能差异与边界处理逻辑,为开发者提供可落地的选型框架

weixin_30414305的博客 444

layui 监听单元格点击事件,获取当前点击单元格的内容以及 所在的表头内容

特别是后台的一些管理系统中 业务中还是会碰见这样的需求呢 如果你的后台使用layui写的话 在表格中 layui 也给我们提供了监听单元格的事件 但是好像不能直接获取到单元格内容个 和 对应的表头 其实 还是可以解决 换个角度使劲就会发现新的世界 不是吗 event: 'username' 在每个表头中加一个 event 属性 这样就可以监听表头事件 记住个 event 和 当前列的字段最好保持一样 table.render({ e...

业余前端的职业经历 1万+

CSV数据解析实战:处理字段内逗号与文本限定符的完整指南

逗号分隔值(CSV)作为一种基础数据交换格式,其核心原理是用特定分隔符(通常是逗号)来区分不同字段。然而,当字段内容本身包含分隔符时,就会产生解析歧义,导致数据错位。为了解决这一问题,业界引入了文本限定符(如双引号)和转义机制,确保数据结构的完整性。掌握CSV的正确处理技术对于保障数据质量至关重要,尤其在数据分析、ETL流程和系统间数据交换等场景中。本文以包含逗号的真实数据(如“Aston Villa, Manchester City”)为例,深入探讨了在Python pandas、Excel及命令行等不同

weixin_34353714的博客 642

宇树智能人形机器人模块化腿部动力系统技术拆解

o电机防摔防护板(3.1.5.1)→端盖总成(3.1.5.2)→电机外壳(3.1.5.4)的冲击力传递路径;o散热风扇(3.1.3.1)推动冷风→大腿基座腔体→散热片组(3.1.5.7)→中空大腿杆排出;o防御专利:覆盖“关节热管理风道接口标准”、“抗冲击结构身份编码”;o大腿杆腔体(3.1.3.4)内置反平行四边形机构,避免连杆外露。:力传感器(3.1.8.4.2)仅部署于足端,缺失关节力矩反馈。:更换行星减速器(3.1.5.5)需拆解整个电机模块;o热量传导路径:电机定子→外壳→散热片组。

weixin_50955533的博客 1231

Python字符串转数组全解析:从split到ast.literal_eval的实战技巧

字符串处理是编程中的基础操作,其核心在于将序列化数据转换为结构化格式。在Python中,字符串到数组的转换涉及数据解析与序列化两个关键技术环节。通过split()方法可实现基于分隔符的简单拆分,而正则表达式则能处理复杂分隔模式,这两种方法构成了文本解析的基础能力。当需要将字符串形式的列表还原为Python对象时,ast.literal_eval()提供了安全的字面量评估方案,避免了eval()的安全风险。这些技术在数据清洗、日志解析、配置加载等场景中具有重要价值,特别是在处理CSV格式数据、网络传输数据时,

a359798678的博客 384

国产AI芯片实战:用寒武纪MLU370低成本部署DeepSeek-R1,实测推理效果与成本分析

本文详细介绍了寒武纪MLU370芯片在部署DeepSeek-R1大模型时的实战效果与成本优势。通过实测数据对比,MLU370在推理速度、能效比和本地化服务方面表现突出,尤其适合智能客服、内容生成等场景,可显著降低硬件投入和运维成本。

weixin_30613727的博客 455

【网络安全 | 渗透工具】密码字典生成工具crunch、cupp安装使用教程

Crunch是一个常用的密码破解工具,它可以根据指定的字符集、长度和模式生成各种可能的密码并进行暴力破解。同时,Crunch可以将生成的密码保存到文件中,以便在破解工具中使用。在进行渗透测试时,手动收集密码字典是十分耗时的,利用密码字典生成工具可以大幅缩短时间,提高爆破宽度。

等风来 8421

[RAG在LangChain中的实现-02]根据数据格式选择文档加载器和文本分割器

在RAG(检索增强生成)系统中,文档加载器和文本分割器是数据预处理阶段的两个核心组件,决定了系统最终能检索到什么质量的内容。文档加载器的主要任务是“数据摄取”,将各种格式的外部非结构化数据导入RAG管道,并转换为统一的文档格式。由于大语言模型有上下文窗口限制,且过长的文本会降低检索精度,分割器负责将加载好的长文档“切片”成更小的块。

JaydenAI的博客 637

6-2 GPU GART 绑定机制与 TLB 失效

本文详细解析了AMD GPU的GART(Graphics Address Remapping Table)绑定机制实现。主要内容包括: 绑定流程:从ttm_tt_bind()到硬件PTE更新的完整调用链,重点分析amdgpu_gart_bind()函数实现。 关键函数: amdgpu_gart_bind():执行安全检查、记录映射关系、更新页表等操作 amdgpu_gart_map():将CPU页映射为多个GPU页并填充PTE amdgpu_gmc_set_pte_pde():处理硬件特定的PTE格式 内存

图形/计算GPU的驱动与虚拟化技术分享园地 2644

笔试必看:Java笔试输入解析完全指南:从基础到实战

Java笔试输入解析指南摘要 本文系统讲解Java笔试中的输入解析技术,涵盖常见输入格式的处理方法。第一部分介绍基础分隔符处理,包括空格、逗号及混合分隔符场景,对比Scanner与split方法的使用技巧。第二部分深入解析复杂结构,如数组格式、键值对和嵌套数据,提供正则表达式和递归处理的解决方案。文章强调输入解析中的常见陷阱(如连续分隔符、中文标点、引号包裹等),并给出20多个代码示例,帮助读者建立完整的输入解析思维框架。通过掌握这些技巧,考生可以更高效地处理笔试中的各类输入格式,将精力集中在算法逻辑实现上

xxxxxxllllllshi的博客 661

基于卷积神经网络CNN实现电力负荷多变量时序预测(PyTorch版)

随着智能电网的发展,精准的电力负荷预测对能源调度和电网稳定具有重要意义。本文基于PyTorch框架,提出一种基于卷积神经网络(CNN)的多变量时间序列预测模型,用于电力负荷的短期预测。

时序笔记 988

华为OD机试真题 新系统2026-04-08 Python&JS 实现【直捣黄龙】

小王在玩一款叫做直捣黄龙的小游戏,在该游戏中他需要从入口位置进入敌营,绕过哨兵的层层封锁,达到敌军司令部实施斩首行动。 敌军阵营是一个n*n的矩阵,入口在坐标(0,n/2),敌军司令部在坐标(n-1,n/2),每个哨兵警戒以自己为中心的9宫格,一旦被哨兵发现则行动失败。

MISAYAONE的博客 586

【开源、教程】RAG全流程实现(java+完整代码):第一弹

RAG(检索增强生成)是一种结合信息检索与大语言模型的技术。它先根据用户查询从外部知识库(如文档、数据库)中检索相关片段,再将检索结果与原始问题一同输入模型生成答案。这有效缓解了模型幻觉、知识过时等问题,并能引用具体来源提升可信度。RAG广泛应用于问答、客服等需实时或专业知识的场景,无需重训练即可更新知识,兼具准确性与灵活性。

我认不到你的博客 435

Logstash安装部署

1. 部署及安装所用的用户不能是root。

lmj3732018的博客 4289

JavaScript字符串底层原理与实战避坑指南

字符串是前端开发中最基础却最易被误解的数据类型,其本质是基于UTF-16编码的不可变码元序列。理解码元与Unicode字符的区别、代理对(surrogate pair)机制及V8引擎的内存优化策略,是避免索引错位、emoji截断、内存泄漏等线上问题的关键。从`charAt()`到`codePointAt()`,从`split()`的正则状态机到`Intl.Segmenter`的语义分词,技术价值在于实现跨语言、跨环境、高精度的文本处理能力。典型应用场景涵盖表单校验、URL解析、日志清洗、国际化排序与富文本操

weixin_33770878的博客 431

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

字符串操作核心原理与性能优化实战指南

字符串作为编程中最基础的数据结构,本质上是字符序列的抽象表示。其底层实现原理涉及字符编码、内存管理和不可变性等核心概念,理解这些原理对于编写高效代码至关重要。从技术价值角度看,合理的字符串操作能显著提升系统性能,避免内存泄漏和编码混乱等问题。在实际应用场景中,字符串处理广泛出现在Web开发、数据处理、系统日志分析等各个领域。特别是在电商促销等高性能要求的场景下,字符串拼接优化和内存管理成为关键。本文通过StringBuilder性能对比和字符编码处理等实用技巧,帮助开发者掌握字符串操作的最佳实践,提升代码质

weixin_34185512的博客 345

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

字符串处理四阶段法:从混乱原始数据到结构化信息的完整流程

字符串处理是数据处理和文本解析的基础技术,其核心原理是通过系统化的方法将非结构化文本转换为可用的结构化信息。在数据清洗、日志解析和API响应处理等场景中,有效的字符串处理技术能够显著提升数据质量和处理效率。基于分词、结构化、验证和转换的四阶段流程,可以系统化地解决混合分隔符、不规则空格和编码问题等常见挑战。本文通过Python实例展示了如何从原始混乱输入开始,逐步实现数据标准化和类型转换,最终得到干净可用的结构化数据,特别适合处理来源不可控但具有内在规律的文本数据。

weixin_30536513的博客 441

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: Java中ping ip工具类
下一篇: spring boot 2.0 报错:“jdbcUrl is required with driverClassName.” 解决办法!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值