如何在CSV文件中处理描述中的逗号

Von*_*ats 3 csv perl comma

这是一个有趣的问题:我有一个通用的价格文件,ID#,描述和价格要导入,作为逗号分隔文件(CSV或TSV)来自各种供应商.其中一个供应商在其"描述"字段中使用逗号.问题在于导入认为每个逗号都定义了一个新列并抛出了记录.(如果导入文件的长度是固定的,那么很容易处理,但不是.)

问题:谁能想到如何处理描述中的逗号?我想用句号或连字符替换逗号,这是可以接受的.

这是文件的样子.

ID,Description,Price
1234,Good Part,1.23
2345,This is.ok,2.34
3456,Bad Part,with a comma,4.56
Run Code Online (Sandbox Code Playgroud)

在第一个和第二个记录中,应该有3列.在第三个示例中,这导致4列并抛出导入,因为它在第3列中查找货币,但却找到了一个字符串.我大部分时间都在使用Perl和Java脚本.

小智 6

最常见的解决方案是引用可能包含"坏字符"的字段.

在这种情况下:

3456,"Bad Part,with a comma",4.56
Run Code Online (Sandbox Code Playgroud)

而反过来,如果你碰巧有"你内心的角色,你用\来逃避它(所以你做普通).

  • 然后使用适当的解析器,如`Texr :: CSV`,[可以处理这个困难但正确的输入](http://stackoverflow.com/a/13917440/168657) (2认同)