Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 删除CSV文件中的内部双引号_Java_Regex_Csv - Fatal编程技术网

Java 删除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

我有一个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

现在我想从这些数据中删除内部引号,但需要为每个数据保留外部双引号

为了处理文件,我使用了
“\”[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