Java 删除CSV文件中的内部双引号
我有一个CSV文件,其中包含双引号内的数据 艾斯 EI_HDR,“测试文件报告”,用于“测试” EI_DT,tx,tx,tx,tx,tx,tx,tx,tx,tx,tx,tx,tx,tx,tx,tx,dt8,tx EI_COL,“承运人,名称”,“承运人ID”,“账户名称”,“账户ID”,“集团名称”,“集团ID”,“行动代码”,“文件ID”,“合同”,“PBP ID”,“响应状态”,“索赔编号”,“索赔顺序”,“HICN”,“持卡人ID”,“服务日期”,“NDC” “测试载体”、“MPDH5427”、“1234”、“CSNP”、“测试D”测试、“FH14077”、“PD14079042”、“H5427”、“077”、“REJ”、“13365827975104”、“999”、“30444398A”、“P0002067501”、“2014年1月1日”、“50742010110”、“C” “测试,载体1”、“BCRIMA”、“载体”、“14”、“123333”、“00000 MCA001401”、“PD14024142”、“H4152”、“013”、“REJ”、“133658317280023”、“999”、“0352552A”、“ZBM200416667”、“2014年1月1日”、“00378350505” 更新后的实际CSV 现在我想从这些数据中删除内部引号,但需要为每个数据保留外部双引号 为了处理文件,我使用了Java 删除CSV文件中的内部双引号,java,regex,csv,Java,Regex,Csv,我有一个CSV文件,其中包含双引号内的数据 艾斯 EI_HDR,“测试文件报告”,用于“测试” EI_DT,tx,tx,tx,tx,tx,tx,tx,tx,tx,tx,tx,tx,tx,tx,tx,dt8,tx EI_COL,“承运人,名称”,“承运人ID”,“账户名称”,“账户ID”,“集团名称”,“集团ID”,“行动代码”,“文件ID”,“合同”,“PBP ID”,“响应状态”,“索赔编号”,“索赔顺序”,“HICN”,“持卡人ID”,“服务日期”,“NDC” “测试载体”、“MPDH542
“\”[a-zA-Z0-9]+[,][a-zA-Z0-9]+\”“
模式来分割文件。但是,如果任何行中有任何内部引号,则代码将中断
我需要将其转换为XLSX,方法是保留逗号并替换内部引号(如果不可能,则删除这些内部引号)
请帮助我解决这个问题。我认为这是不可能的,因为您标定两个值的方式不明确。例如,如何拆分以下值
""I am", "a single", ", value""
是否意味着:
I am
a single
, value
或
甚至
I am, a single, , value
首先,为什么不使用正则表达式的正确字符 实际上有一个字符:
\w
,意思是[a-zA-Z_0-9]
,而不是你的[a-zA-Z0-9]
(完全相同,只是添加了u,但我认为更可读^)
对于您的模式,正如其他人所说,最好的方法是首先更正生成csv的方式;)如果您的数据只有一个双引号:,“abc”def,-以下内容应该会有所帮助: test.txt “abc”、“def”gh、“ijk” “lmn”、“o”pq、“rst” sed-i的/([^,])\”([^,])/\1\“\”\2/g'test.txt 上面的命令查找一组与模式匹配的3个字符-?“?其中?不是逗号。暗示-搜索3个与“”不同的字符,并将“替换为” 命令拆分: ([^,])-不是逗号的字符-()用于记住此字符 \“-双引号 \1-记住的第一个字符 \2-记忆的第二个字符 注意:如果在封装的文档中有两个双引号,则这不起作用。上述命令不转义为“in”,a“b”cc
希望这有点帮助。替换“\”很容易-但这足够了吗?这不是有效的CSV文件。解决方案:修复生成此输出的系统。您好,Java1,我需要保留外部引号。嗨,邓肯,现在我提供了真实的数据。+1这就是问题所在。输入文件不是有效的CSV,它不明确,无法进行解析。您好,我一定会尝试使用\w。但这并不能解决我的问题。我必须保持逗号完整,并删除内部引号。
I am, a single, , value