在CSV文件中添加双引号分隔符

40

我有一些文本文件,其中包含广播节目的标题,每个项目都在单独的行上,例如:

15 by 15
15 Minute Drama
Adrian Mole
Afternoon Drama
Afternoon Reading
etc

我希望在每行文本上添加双引号作为分隔符,例如:

"15 by 15"
"15 Minute Drama"
"Adrian Mole"
"Afternoon Drama"
"Afternoon Reading"
etc

我本来以为可以在Excel中完成这个任务,但是一直找不到方法。只要不需要手动操作,无论是基于Excel还是其他任何工具的解决方案都可以。

请问有人能帮忙吗?


如果这些解决方案中有一个符合您的需求,请选择其中一个答案。 - joemienko
5个回答

46

8
这对我没用。我的文件中有包含逗号的长文本字段。使用那种格式,长文本不再在单元格宽度内换行,因此显示为一排####。当我按照上面的步骤操作后,生成的csv也出现了####,而不是原始文本。 - MattClarke
4
同时在数字列中使用“#”。 - DropHit
对于日期或数字列,这不按预期工作。 - QuietSeditionist
3
当我在文本编辑器中打开时,它保存为""""Data"""",""""data2"""" - wcndave
1
在Office 365上不可接受,因为它用三个双引号括起来。44000最终变成了"""44000"""。这显然是荒谬的。你为什么要三倍于你的双引号呢?我解决这个问题的方法是使用文本编辑器将"""替换为" - Fabien Haddadi
显示剩余4条评论

38

打开 PowerShell 并运行以下命令:

import-csv C:\Users\Documents\Weekly_Status.csv | export-csv C:\Users\Documents\Weekly_Status2.csv  -NoTypeInformation -Encoding UTF8

4
太棒了,不知道为什么没有人点赞,我刚刚浪费时间在写用Node.js实现这个功能的代码上。 - PDHide
2
谢谢你啊伙计,这个完美地工作了,帮我省了很多时间! - Iason
1
赞成此答案,因为它是正确的解决方案。 - Seymour
1
这只在初始单元格开头和最后单元格末尾添加双引号。我有分号分隔的csv文件。是因为这个吗?还有其他人遇到同样的问题吗? - Mutlu Simsek
1
如果您想用引号包围所有字段而不是特定的字段,那么这是可以接受的... - Fabien Haddadi
显示剩余5条评论

21

在 Excel(或任何电子表格应用程序)中,这实际上相当容易。

您将需要使用=CONCATENATE()函数,如以下截图中的公式栏所示:

第一步涉及在B列中添加引号,

第二步涉及指定函数,然后将其复制到C列中(此时您的电子表格应该看起来像屏幕截图),

enter image description here

第三步(如果您需要公式外的文本)涉及复制C列,右键单击D列,选择“粘贴特殊”>>“粘贴值”。然后,D列应包含在C列中计算出的文本。


1
这不是解决方案,这只是一个过度工程化的权宜之计。@Manav提供了其中一个正确的解决方案。 - Seymour
1
@Seymour Sweet,让我在我正在使用 Excel 的 Mac 上打开 PowerShell…在保存Excel后使用第二个程序(例如终端/ shell等)来操作电子表格数据并不是一种理想或高效的解决方案。上述方法就是我解决问题的方式。同意就此事意见不合。 - sparecycle
1
那接下来呢?如果你将其导出为CSV格式,开头和结尾会有3个双引号。 - Garr Godfrey
对我来说也不是解决方案...因为你最终会导出带有不需要的列的CSV文件...所以只能回到原点,用文本编辑器或其他解决方案来修改导出结果... - Fabien Haddadi
这不是一个正确的答案,也没有解决问题。 - FreelanceConsultant
显示剩余3条评论

4
在至少适用于Mac的Excel中,您可以通过另存为“CSV for MS DOS”来实现此操作,该操作将为任何需要引号的字段添加双引号。

1
在Windows上保存为“CSV for MS DOS”无法正常工作(我不知道为什么Office 365的Windows另存为对话框中会有这个选项)。 - vibs2006
1
它“有点”起作用。如果文本块段落包含逗号,它会在其周围添加引号。不幸的是,这并不像你想象的那样有用。 - Airk
1
任何需要它们的字段 - 当您想要在每个字段周围使用双引号导出CSV时,这不是一个解决方案。 - MrUpsidown

1

使用VBA可以通过两种方式实现双引号

第一种通常是最好的

"...文本..." & Chr(34) & "...文本..."

或者第二种,更直接的方式

"...文本..." & """" & "...文本..."


第二个也可以被压缩成 "...text...""...text..."(注意,这一个不需要 &,虽然不太容易调试)。 - bmgh1985
非常感谢bmgh1985的回复,我不知道如何使用VBA,但是第一个提供的解决方案对我很有帮助。无论如何还是非常感谢! :-) - user338034

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接