csv - 从 CSV 中删除双引号但保留限定符(使用 Notepad++)
问题描述
我有一个逗号分隔的文本文件,其中一列(适当地)具有用双引号括起来的文本。在此特定列的内容中也有许多双引号实例。我使用以下内容删除了许多双引号,将它们替换为单引号(不包括逗号旁边的任何双引号)。
(?<!^)(?<![,])"(?![,])(?!$)
如何在不删除“好”双引号的情况下隔离/替换 [fine,] 之后的双引号?
column1,“他做得很好,”汤姆说,但没有具体说明。呸呸呸呸”,第 3 栏
这是我不想删除的“好”双引号的另一个示例(前两列为空白/空)
,,"这是我需要的文字",
解决方案
假设双引号只出现在一列中,那么我建议采用两步法。首先将文件中的所有双引号更改为单引号,使用简单的全部替换。接下来将第一个和最后一个单引号改回双引号。这可以在一个正则表达式中完成,替换(^[^\r\n']*)'(.*)'(^[^\r\n']*)$
为\1"\2"\3
.
如果单引号出现在其他列中并且不应更改 see,则可以使用三步法。选择一个在文本中任何地方都没有出现的字符。将所有双引号更改为该字符,我将!
用作示例。如上,将第一个和最后一个!
改为双引号。这可以在一个正则表达式中完成,替换(^[^\r\n']*)!(.*)!(^[^\r\n']*)$
为\1"\2"\3
. 最后将所有更改!
为单引号。如果找不到未使用的字符,则可以使用不在文件中的较长字符串,可能类似于_<<abc>>_
代替!
.
推荐阅读
- php - PHP根据值的组合合并两个数组
- javascript - 构建一个 Photoshop 脚本,为这批照片添加一个文本层
- angular - 如何在 Angular 中为 Clarity Datepicker 设置默认值
- java - Cassandra:对现有表执行转换的策略
- python - 使用 Python 列出 linux 中的所有守护进程/服务名称?
- trello - Trello 开机显示多个卡片徽章
- java - 将 vensim 集成到 anylogic 中但出现运算符错误
- node.js - 更改 package.json 时“npm install”和“npm update”的行为是什么?
- oracle - oracle 表单获取表和多行块中的数据
- php - 为什么我的 PHP 会话变量只能在特定浏览器中工作而在其他浏览器中失败?