繁体   English   中英

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

[英]Remove inner double quote in CSV file

我有一个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”,“测试载体”,“ MPDH5427”,“ 1234”,“ CSNP”,“ TestD” “测试”,“ FH14077”,“”,“ PD14079042”,“ H5427”,“ 077”,“ REJ”,“ 133658279751004”,“ 999”,“ 304443938A”,“ P0002067501”,2014年1月1日,” 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)。

请帮我解决这个问题。

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

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

是否意味着:

I am
a single
, value

要么

I am
a single, , value

甚至

I am, a single, , value

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

实际上有一个char: \\w表示[a-zA-Z_0-9]而不是您的[a-zA-Z0-9] (与_相同,但可读性更高,我认为^^)

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

如果您的数据只有一个双引号:,“ 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“,

希望这个对你有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM