如何转义CSV文件中的逗号

CSV全称是:Comma Separated Values 或者 Character Separated Values。

尽管第一种说法更常见,但我觉得还是第二种说法更确切一些,因为你可以使用其它字符做分隔符。

使用逗号做分隔符的CSV文件有一个好处:你可以直接用Excel打开。如果使用其它分隔符,比如“|”,你必须告诉Excel该文件使用“|”作分隔符,Excel才能把它导入进来。 

前几天,project manager告诉我:我们有许多CSV文件,都是使用“|”做分隔符,用Excel打开的时候比较麻烦,用户想在Excel中直接打开。这样就需要使用“,”做分隔符。但是文件中有些字段含有逗号,必须对这些逗号特殊处理,才能保证CSV文件在Excel中正确打开。他还给了我一个算法:

如果字段中有逗号(,),该字段使用双引号(")括起来;

如果该字段中有双引号,该双引号前要再加一个双引号,然后把该字段使用双引号括起来。

看完project manager的要求,我真是满头起包啊。在IT业混了十几年了,竟然不知道这样处理逗号。

举几个例子:

 

字段处理前

字段处理后

abc,d2

"abc,d2"

ab"c,d2

"ab""c,d2"

"abc

"""abc"

""

""""""

 

如果字段中有两个挨着的双引号,比如:aaa""ccc。这种情况不用特殊处理。这是我在写这篇博客的时候才想起来的,赶忙使用Excel测试了一下。还好,不用特殊处理就能正常打开,不然我还得改程序。当然了,如果你把它处理成:"aaa""""ccc" Excel也能正常打开。事后总结总结真是有好处啊。

另外,如果某字段第一个字符是空格,第二个字符是双引号,这种情况不用特殊处理。Project Manager在给我描述算法的时候,也举了一个字段只有一个双引号的例子,但他不小心在双引号前面加了个空格,把问题掩盖过去了。

我是在WinXP和MS Excel2007下测试的。如果运行在其他环境和应用程序下,还需进行测试,规则可能不一样。

 

(这是一篇老博文,11-1-22 下午11:44 发布在Google Blogger上。但我只是几年前在那里发了几篇文章,早已经不维护了,干脆把看得上眼的文章搬过来算了)

转自http://www.cnblogs.com/xiaomiganfan/p/4073454.html

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
### 回答1: 可以使用 PyQt5 库的 QFile、QTextStream 类来写入 CSV 文件。 下面是一个简单的例子,假设你已经安装了 PyQt5 库: ```python from PyQt5.QtCore import QFile, QTextStream # 打开文件,如果文件不存在则自动创建 file = QFile("data.csv") if not file.open(QFile.WriteOnly | QFile.Text): print("无法打开文件") # 创建文本流 stream = QTextStream(file) # 写入数据 stream << "Name, Age, Gender\n" # 写入表头 stream << "Alice, 25, Female\n" # 写入一行数据 stream << "Bob, 30, Male\n" # 写入另一行数据 # 关闭文件 file.close() ``` 这样就可以在 data.csv 文件写入以下内容: ``` Name, Age, Gender Alice, 25, Female Bob, 30, Male ``` 希望这对你有帮助。 ### 回答2: QT是一种跨平台的开发框架,可以用于开发各种类型的应用程序,包括处理和操作CSV文件CSV(Comma Separated Values,逗号分隔值)是一种常用的数据存储格式,用于在不同应用程序之间传输和共享数据。 在QT,要写入CSV文件,我们可以使用QFile和QTextStream类来操作文件和数据。首先,我们需要创建一个QFile对象,并指定要写入的CSV文件的路径。然后,我们可以打开文件,并创建一个QTextStream对象与文件进行关联。 接下来,我们可以使用QTextStream的<<运算符来将数据写入CSV文件CSV文件的每一行通常是由逗号分隔的不同字段组成的。我们可以使用逗号作为分隔符,然后将每个字段写入CSV文件。 例如,假设我们要将以下数据写入CSV文件: 姓名,年龄,性别 张三,25,男 李四,30,男 王五,20,女 可以使用以下代码实现CSV文件的写入: ```cpp QFile file("data.csv"); if (file.open(QIODevice::WriteOnly | QIODevice::Text)) { QTextStream stream(&file); stream << "姓名,年龄,性别" << endl; stream << "张三,25,男" << endl; stream << "李四,30,男" << endl; stream << "王五,20,女" << endl; file.close(); } ``` 以上代码将创建一个名为"data.csv"的文件,并将数据写入其。首先,我们写入CSV文件的列标题,然后逐行写入每个数据记录。 在编写CSV文件时,需要注意对于包含逗号的字段,需要使用引号或转义符进行处理,以避免CSV文件格式错误。 这样,我们就可以使用QT来写入CSV文件了。通过使用QFile和QTextStream类,我们可以轻松地将数据写入CSV文件,并在应用程序进行处理和操作。 ### 回答3: QT是一种跨平台的C++开发框架,可以用于开发各种应用程序,包括对CSV文件的读写操作。 要在QT将数据写入CSV文件,可以按照以下步骤进行操作: 1. 首先,在QT项目包含必要的头文件,例如QFile和QTextStream,这些头文件提供了处理文件和文本流的功能。 2. 创建一个QFile对象,指定要写入的CSV文件的路径。例如,可以使用QFile file("data.csv")创建一个名为"data.csv"的CSV文件。 3. 使用QIODevice::WriteOnly参数打开文件,以便只能写入数据。 4. 创建一个QTextStream对象,并将其与QFile对象绑定,以便使用文本流写入数据到CSV文件。例如,可以使用QTextStream stream(&file)创建一个绑定到file的文本流。 5. 使用QTextStream类的流操作符(<<)将数据写入CSV文件。例如,可以使用stream << "1,John,Smith"将一行数据写入CSV文件。 6. 重复步骤5,将需要写入的所有数据都写入CSV文件。 7. 使用QTextStream类的flush()函数将缓冲区的数据刷新到文件。 8. 使用QFile类的close()函数关闭文件。 完成上述步骤后,数据将被成功写入CSV文件。 需要注意的是,在写入CSV文件时,要按照CSV文件的要求对数据进行逗号分隔,并根据需要添加换行符。 以上是使用QT进行CSV文件写入数据的一般步骤,根据具体需求,可能需要在写入过程进行数据的格式转换或者其他操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值