如何忽略 CSV 文件中的双引号?

How to ignore double quotes from CSV file?

我正在使用 ColdFusion 在 MySQL 数据库中导入 CSV 文件,我的代码工作正常,但我有一个问题。我想忽略单词周围的双引号。所以我的 csv 看起来像这样: "John","Mark","Peter" 。每次我在数据库中插入 CSV 后,我都会在我的话周围加上双引号。 ColdFusion 中是否有任何命令可用于防止双引号?我尝试使用 trim 但没有用。如果您知道任何可以提供帮助的信息,请告诉我。

好吧,您可以使用命名方便且易于猜测的 replace() function. However... you might not want to get rid of all of them. Double-quote string delimiters are how CSV deals with data values with embedded commas or new line characters in them (see the CSV RFC) 来替换双引号。如果你知道你不会有任何这些,我认为摆脱没有坏处。

就是说...更好的方法可能是一开始就不要把引号放在那里,而不是拥有它们然后需要摆脱它们。如果可能的话,会采用这种方法。

您可以使用 cfhttp 将 CSV 文件读入 cfquery 对象。例如:

my.csv 文件内容:

"forename","surname","id"
"fred","blogs",1000
"jim","smith",2000

然后您可以像这样阅读它:

<cfhttp url="http://scratch.localhost/my.csv" method="get" name="mydata">
<cfdump var="#mydata#">

mydata 将是一个 cfquery 对象,因此您可以简单地遍历它。双引号将被删除,它看起来像:

    FORENAME  ID    SURNAME
1   fred      1000  blogs
2   jim       2000  smith

如果您这样做,则需要通过 http 提供您的 CSV。在本地开发环境中这很好,但不要在生产环境中这样做。所以我只推荐一次性导入(在受限环境中)或者数据无论如何都可以公开访问的情况。

否则使用 Adam Cameron's 答案。

遍历字段并按照以下行做一些事情:

<cfset field = reReplace(field, '^"', '')>
<cfset field = reReplace(field, '"$', '')>
<cfset field = replace(field, '\"', '"', 'ALL')>

这将删除字段中周围的引号和非转义引号。