我有一个逗号分隔的CSV文件(,
),其中通过将数据括在引号("
)中来转义逗号。
ID,Email,Job Title
1001,wdaelman@example.com,Technician
1002,rfewell@example.com,"Specialist, HRIT"
1003,jcoulbeck@example.com,"Director, Nursing"
我想通过使用Notepad ++查找并用管道替换用双引号(|
括起来的逗号)来将CSV转换为以管道分隔的文件("
)。
ID|Email|Job Title
1001|wdaelman@example.com|Technician
1002|rfewell@example.com|"Specialist, HRIT"
1003|jcoulbeck@example.com|"Director, Nursing"
我的第一种方法是对match any unquoted commas使用正则表达式。但是,在Notepad ++中搜索("[^"]*")|,
会替换未加引号的逗号和所有包含逗号的加引号的字符串。
1002|rfewell@example.com||
如何使用Notepad ++将逗号分隔的CSV文件(,
)转换为管道分隔的文件(|
)?
答案 0 :(得分:1)
您可以使用正则表达式("[^"]*")|,
,但需要替换为(?1$1:|)
。
模式匹配并捕获到组1中,一个"
,然后捕获除"
之外的任何0+字符,然后又捕获一个"
(带有("[^"]*")
),或( |
仅匹配一个逗号(即,双引号子字符串之外的逗号,因为它们已经与前面的分支匹配)。
(?1$1:|)
替换模式意味着,一旦组1匹配((?1
),组1值应放回原位置(请参见$1
占位符),否则({{ 1}})用管道符号替换匹配的字符串(即逗号)。
答案 1 :(得分:1)
您可能想尝试一下:
|
字符的数据。首先,将,([^"\n,]*\|[^"\n,]*)
替换为,"\1"
|
作为定界符:将,("[^"\n]*"|[^,\n]*)
替换为|\1
注意:我完全忽略了第一列,因为它似乎是不需要额外处理的ID