当前位置: 首页 > 知识库问答 >
问题:

使用记事本将逗号分隔的CSV转换为管道分隔的文件

翟源
2023-03-14

我有一个逗号分隔的CSV文件(),其中逗号通过在引号中环绕数据来转义(")。

ID,Email,Job Title
1001,wdaelman@example.com,Technician
1002,rfewell@example.com,"Specialist, HRIT"
1003,jcoulbeck@example.com,"Director, Nursing"

我想通过使用记事本查找任何未包含在双引号()中的逗号,并将其替换为管道,将我的CSV转换为管道分隔文件(|)。

ID|Email|Job Title
1001|wdaelman@example.com|Technician
1002|rfewell@example.com|"Specialist, HRIT"
1003|jcoulbeck@example.com|"Director, Nursing"

我的第一种方法是使用正则表达式匹配任何不带引号的逗号。但是,在记事本中搜索(“[^”]*”)|,会同时替换未加引号的逗号和任何包含逗号的带引号的字符串

1002|rfewell@example.com||

如何使用记事本将逗号分隔的CSV文件()转换为管道分隔的文件(|)?

共有2个答案

都浩淼
2023-03-14

你可能想试试这个:

  1. 包装包含|字符的数据。首先,用,“\1”

注意:我完全忽略了第一列,因为它似乎是一个不需要额外处理的ID

南门魁
2023-03-14

你可以使用你的正则表达式,(“[^”]*”)|,,但是你需要用(?1$1:|)替换它。

模式匹配并捕获到第1组a”,然后是除之外的任何0个字符,然后是(使用(“[^”]*”),或者(|)只匹配一个逗号(即双引号子字符串外的逗号,因为这些子字符串已经与前面的分支匹配)。

(-1$1:|)替换模式意味着,一旦组1匹配((-1),组1的值应该放回原来的位置(参见$1占位符),否则()用管道符号替换匹配的字符串(即逗号)。

 类似资料:
  • 问题内容: 我有一个这样的表: Department是另一个具有dept_id和dept_name作为列的表。我想要这样的结果, 有什么帮助吗? 问题答案: 您可以按照以下方式进行操作: 编辑: 基于我需要加入哪一列?在一个表中,我有逗号分隔的ID,而在其他表中,我只有ID

  • 问题内容: 如何在Java中转换为逗号分隔的字符串? 结果我想要: 这是非常相似的参考问题,但是这些解决方案都无法提供结果,这正是我所需要的。 到目前为止我尝试过的 问题答案: 这是一个流版本,在功能上等同于khelwood,但使用了不同的方法。 他们都创建了一个,将每个映射到一个,并用逗号将它们连接在一起。 它们在性能上也应该完全相同,尽管从 技术上讲 我是直接打电话给他,而他是在打电话给代表。

  • 如何在Java中将int[]转换为逗号分隔的字符串? 我想要的结果是: 这里有非常相似的参考问题,但这些解决方案都没有提供我需要的结果。 > 如何在Java中使用toString方法将int数组转换为String 如何在不SomeType@2f92e0f4的情况下打印Java对象? 如何转换列表 到目前为止我所做的,

  • 我已经查看了Pandas的内置csv功能,但是我的csv数据保存在一个列表中。我如何简单地将列表隐藏到一个7列的数据帧中。 提前谢了。

  • 问题内容: 我知道如果要将s 数组转换为a ,我可以这样做: 但我不知道如何将s 数组转换为逗号分隔 问题答案: 好吧,你可以这样做:

  • 我有以下字符串 我想转换成一个可变数组,这样它就变成了[4,5]我尝试了以下操作,但没有成功