删除CSV文件中的内部双引号

时间:2014-04-15 07:43:39

标签: java regex csv

我有一个CSV文件,其中包含数据中的双引号。

  

EI_SS   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“   “Test Carrier”,“MPDH5427”,“1234”,“CSNP”,“TestD”Test“,”FH14077“,”“,”PD14079042“,”H5427“,”077“,”REJ“,”133658279751004“, “999”,“304443938A”,“P0002067501”,01/01/2014,“50742010110”,“C”   “Test,Carrier1”,“BCRIMA”,“Carrier”,“14”,“123333”,“00000MCA0014001”,“”,“PD14024142”,“H4152”,“013”,“REJ”,“133658317280023”,“ 999“,”035225520A“,”ZBM200416667“,01/01/2014,”00378350505“

更新的实际CSV

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

对于处理文件,我使用"\"[a-zA-Z0-9 ]+[,][ a-zA-Z0-9]+\""模式来分割文件。但如果任何行中有任何内部引用,则代码会中断。

我需要通过保留逗号并替换内部引号将其转换为XLSX(如果不可能,则删除那些内部引号。

请帮我解决这个问题。

3 个答案:

答案 0 :(得分:2)

我认为这是不可能的,因为划分两个值的方式是模棱两可的。例如,如何拆分以下值?

""I am", "a single", ", value""

是否意味着:

I am
a single
, value

I am
a single, , value

甚至

I am, a single, , value

答案 1 :(得分:0)

首先为什么不使用正则表达式的正确字符?

实际上有一个字符:\w表示[a-zA-Z_0-9]而非[a-zA-Z0-9](完全相同,只是添加_但更可读,我认为^^)

对于你的模式,正如其他人所说,最好的方法是首先纠正你生成csv的方式;)

答案 2 :(得分:0)

如果您的数据只有一个双引号:" abc" def", - 以下应该有所帮助:

的test.txt " ABC"" DEF" GH"" IJK" " LMN"" O" PQ"" RST"

sed -i' s /([^,])\"([^,])/ \ 1 \" \" \ 2 / g'的test.txt

上面的命令查找一组与模式匹配的3个字符 - ?"?哪里?什么都不是逗号。意思是 - 搜索3个不喜欢的字符,",并替换"用""

命令拆分: ([^,]) - 不是逗号的字符 - ()用于记住此字符 \" - 双重报价 \ 1 - 记住的第一个字符 \ 2 - 记住的第二个字符。

注意:如果封装中有两个双引号,则不起作用。上面的命令没有逃脱" in," a" b" cc",

希望这有点帮助。