CSV 文件中的字段中的开头和结尾上,可能会存在空格或制表符,但是该如何处理呢?

什么是 包裹(使用双引号)?

包裹的概念是面向字段的,包裹起来的字段将会被视为一个整体。尤其当字段中包含一些特殊符号(如逗号、换行符、双引号)时,如果不将这些字段包裹起来,则很有可能导致 CSV 文件解析发生错误。那么我们该如何包裹一个字段呢,通常将一个字段放置在双引号("")之间,例如"ID",ID就是一个被包裹的字段。任何字段都可以使用双引号("")将其包裹起来,并不存在任何限制。

字段中特殊符号的处理

根据上面的介绍,如果一个字段中包含特殊符号,那么在写入时必须使用双引号来包裹这个字段。有一点需要注意,C语言中字符串中的双引号需要通过使用转义符号来表示(\")

下面分别用逗号、换行符、双引号来做示例

  • 逗号fprintf(fp, "3,\"z,xc\",3.3\n");

  • 换行符fprintf(fp, "4,\"qw\nas\",4.4\n");

  • 双引号fprintf(fp, "5,\"\"aszx\"\",5.5\n");,第一个用作包裹字段,第二个双引号才是实际的双引号。

完整的程序如下:

// 2-1.c
#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE *fp = fopen("tmp.csv", "w+");
    if (fp == NULL) {
        fprintf(stderr, "fopen() failed.\n");
        exit(EXIT_FAILURE);
    }

    fprintf(fp, "ID,Name,Points\n");
    fprintf(fp, "1,qwe,1.1\n");

    int id = 2;
    char *name = "asd";
    float point = 2.2;
    fprintf(fp, "%d,%s,%f\n", id, name, point);

    // special symbols
    fprintf(fp, "3,\"z,xc\",3.3\n");
    fprintf(fp, "4,\"qw\nas\",4.4\n");
    fprintf(fp, "5,\"\"aszx\"\",5.5\n");

    fclose(fp);
    return 0;
}

运行程序,查看 CSV 文件内容,结果为:

字段开头和结尾处的空格和制表符

CSV 文件中的字段中的开头和结尾上,可能会存在空格或制表符,但是该如何处理呢?按照 RFC 4180 标准的规定,“空格被看作字段的一部分,不应当被忽略”。但是RFC 4180 并不是强制标准,因此某些实现中,空格和制表符会被截断掉。因此 fprintf(fp, " 6,abc,6.6 \n"); 写入的字段可能是 6,abc,6.6(按照 RFC 4180 标准) 或者是 6,abc,6.6(空格被截掉)

然而,在 RFC 4180 标准中,并未说明空格字符若出现在被包裹的值之外如何处理,例如在 fprintf(fp, " \"7\",def,\"7.7\" \n"); 语句中,如字段\"7\",虽然7被包裹,但包裹之外的又有空格,因此目前标准中对这样的空格该如何处理还没有规定,可以保留也可以截掉。\"7.7\" 字段也面临着同样的问题。https://www.imdb.com/list/ls539016836/
https://www.imdb.com/list/title/ls539016836/
https://www.imdb.com/list/ls539016836/?6B9Kc
https://www.imdb.com/list/ls539016832/
https://www.imdb.com/list/title/ls539016832/
https://www.imdb.com/list/ls539016832/?z87NK
https://www.imdb.com/list/ls539016829/
https://www.imdb.com/list/title/ls539016829/
https://www.imdb.com/list/ls539016829/?6Md7R
https://www.imdb.com/list/ls539016828/
https://www.imdb.com/list/title/ls539016828/
https://www.imdb.com/list/ls539016828/?8d98j
https://www.imdb.com/list/ls539016882/
https://www.imdb.com/list/title/ls539016882/
https://www.imdb.com/list/ls539016882/?nnxfg
https://www.imdb.com/list/ls539016884/
https://www.imdb.com/list/title/ls539016884/
https://www.imdb.com/list/ls539016884/?11N4v
https://www.imdb.com/list/ls539012008/
https://www.imdb.com/list/title/ls539012008/
https://www.imdb.com/list/ls539012008/?3ia9q
https://www.imdb.com/list/ls539012055/
https://www.imdb.com/list/title/ls539012055/
https://www.imdb.com/list/ls539012055/?d5gG1
https://www.imdb.com/list/ls539012523/
https://www.imdb.com/list/title/ls539012523/
https://www.imdb.com/list/ls539012523/?9ZsJ1
https://www.imdb.com/list/ls539012565/
https://www.imdb.com/list/title/ls539012565/
https://www.imdb.com/list/ls539012565/?Y19QD
https://www.imdb.com/list/ls539012598/
https://www.imdb.com/list/title/ls539012598/
https://www.imdb.com/list/ls539012598/?AHww1
https://www.imdb.com/list/ls539012584/
https://www.imdb.com/list/title/ls539012584/
https://www.imdb.com/list/ls539012584/?I3ZI5
https://www.imdb.com/list/ls539012709/
https://www.imdb.com/list/title/ls539012709/
https://www.imdb.com/list/ls539012709/?sCwLY
https://www.imdb.com/list/ls539012753/
https://www.imdb.com/list/title/ls539012753/
https://www.imdb.com/list/ls539012753/?w1q68
https://www.imdb.com/list/ls539012710/
https://www.imdb.com/list/title/ls539012710/
https://www.imdb.com/list/ls539012710/?VijCN
https://www.imdb.com/list/ls539012778/
https://www.imdb.com/list/title/ls539012778/
https://www.imdb.com/list/ls539012778/?RQD7a
https://www.imdb.com/list/ls539012732/
https://www.imdb.com/list/title/ls539012732/
https://www.imdb.com/list/ls539012732/?cT3SX
https://www.imdb.com/list/ls539012737/
https://www.imdb.com/list/title/ls539012737/
https://www.imdb.com/list/ls539012737/?L3cXF
https://www.imdb.com/list/ls539012725/
https://www.imdb.com/list/title/ls539012725/
https://www.imdb.com/list/ls539012725/?Sdy68
https://www.imdb.com/list/ls539012727/
https://www.imdb.com/list/title/ls539012727/
https://www.imdb.com/list/ls539012727/?p5444
https://www.imdb.com/list/ls539012785/
https://www.imdb.com/list/title/ls539012785/
https://www.imdb.com/list/ls539012785/?hRhNr
https://www.imdb.com/list/ls539012780/
https://www.imdb.com/list/title/ls539012780/
https://www.imdb.com/list/ls539012780/?DMm19
https://www.imdb.com/list/ls539012103/
https://www.imdb.com/list/title/ls539012103/
https://www.imdb.com/list/ls539012103/?833nR
https://www.imdb.com/list/ls539012155/
https://www.imdb.com/list/title/ls539012155/
https://www.imdb.com/list/ls539012155/?YlF19
https://www.imdb.com/list/ls539012179/
https://www.imdb.com/list/title/ls539012179/
https://www.imdb.com/list/ls539012179/?Sdc6a
https://www.imdb.com/list/ls539012111/
https://www.imdb.com/list/title/ls539012111/
https://www.imdb.com/list/ls539012111/?37k5g
https://www.imdb.com/list/ls539012166/
https://www.imdb.com/list/title/ls539012166/
https://www.imdb.com/list/ls539012166/?HAMsi
https://www.imdb.com/list/ls539012134/
https://www.imdb.com/list/title/ls539012134/
https://www.imdb.com/list/ls539012134/?43e4Q
https://www.imdb.com/list/ls539012147/
https://www.imdb.com/list/title/ls539012147/
https://www.imdb.com/list/ls539012147/?6Y3mF
https://www.imdb.com/list/ls539012198/
https://www.imdb.com/list/title/ls539012198/
https://www.imdb.com/list/ls539012198/?zd5UW
https://www.imdb.com/list/ls539012182/
https://www.imdb.com/list/title/ls539012182/
https://www.imdb.com/list/ls539012182/?1hOd2
https://www.imdb.com/list/ls539012353/
https://www.imdb.com/list/title/ls539012353/
https://www.imdb.com/list/ls539012353/?m5xdh
https://www.imdb.com/list/ls539012377/
https://www.imdb.com/list/title/ls539012377/
https://www.imdb.com/list/ls539012377/?Z3PdW
https://www.imdb.com/list/ls539012316/
https://www.imdb.com/list/title/ls539012316/
https://www.imdb.com/list/ls539012316/?Cn557
https://www.imdb.com/list/ls539012323/
https://www.imdb.com/list/title/ls539012323/
https://www.imdb.com/list/ls539012323/?972iN
https://www.imdb.com/list/ls539012369/
https://www.imdb.com/list/title/ls539012369/
https://www.imdb.com/list/ls539012369/?vinnq
https://www.imdb.com/list/ls539012349/
https://www.imdb.com/list/title/ls539012349/
https://www.imdb.com/list/ls539012349/?n8ODz
https://www.imdb.com/list/ls539012385/
https://www.imdb.com/list/title/ls539012385/
https://www.imdb.com/list/ls539012385/?0V9TS
https://www.imdb.com/list/ls539012398/
https://www.imdb.com/list/title/ls539012398/
https://www.imdb.com/list/ls539012398/?9UzNw
https://www.imdb.com/list/ls539012698/
https://www.imdb.com/list/title/ls539012698/
https://www.imdb.com/list/ls539012698/?5UA60
https://www.imdb.com/list/ls539012682/
https://www.imdb.com/list/title/ls539012682/
https://www.imdb.com/list/ls539012682/?v5L59
https://www.imdb.com/list/ls539012684/
https://www.imdb.com/list/title/ls539012684/
https://www.imdb.com/list/ls539012684/?509Uy
https://www.imdb.com/list/ls539012203/
https://www.imdb.com/list/title/ls539012203/
https://www.imdb.com/list/ls539012203/?ouPv2
https://www.imdb.com/list/ls539012276/
https://www.imdb.com/list/title/ls539012276/
https://www.imdb.com/list/ls539012276/?66LVF
https://www.imdb.com/list/ls539012211/
https://www.imdb.com/list/title/ls539012211/
https://www.imdb.com/list/ls539012211/?sb4U1
https://www.imdb.com/list/ls539012266/
https://www.imdb.com/list/title/ls539012266/
https://www.imdb.com/list/ls539012266/?U8vmG
https://www.imdb.com/list/ls539012268/
https://www.imdb.com/list/title/ls539012268/
https://www.imdb.com/list/ls539012268/?fzpf5
https://www.imdb.com/list/ls539012249/
https://www.imdb.com/list/title/ls539012249/
https://www.imdb.com/list/ls539012249/?ZUYx5
https://www.imdb.com/list/ls539012248/
https://www.imdb.com/list/title/ls539012248/
https://www.imdb.com/list/ls539012248/?k9HN0
https://www.imdb.com/list/ls539012284/
https://www.imdb.com/list/title/ls539012284/
https://www.imdb.com/list/ls539012284/?5uIij
https://www.imdb.com/list/ls539012459/
https://www.imdb.com/list/title/ls539012459/
https://www.imdb.com/list/ls539012459/?Mx49R
https://www.imdb.com/list/ls539012411/
https://www.imdb.com/list/title/ls539012411/
https://www.imdb.com/list/ls539012411/?suH4X
https://www.imdb.com/list/ls539012427/
https://www.imdb.com/list/title/ls539012427/
https://www.imdb.com/list/ls539012427/?k91CB
https://www.imdb.com/list/ls539012499/
https://www.imdb.com/list/title/ls539012499/
https://www.imdb.com/list/ls539012499/?60v3q
https://www.imdb.com/list/ls539012282/
https://www.imdb.com/list/title/ls539012282/
https://www.imdb.com/list/ls539012282/?6jB8K
https://www.imdb.com/list/ls539012997/
https://www.imdb.com/list/title/ls539012997/
https://www.imdb.com/list/ls539012997/?Stchl
https://www.imdb.com/list/ls539012807/
https://www.imdb.com/list/title/ls539012807/
https://www.imdb.com/list/ls539012807/?65r3F
https://www.imdb.com/list/ls539012875/
https://www.imdb.com/list/title/ls539012875/
https://www.imdb.com/list/ls539012875/?VwM44
https://www.imdb.com/list/ls539012860/
https://www.imdb.com/list/title/ls539012860/
https://www.imdb.com/list/ls539012860/?GYIF1
https://www.imdb.com/list/ls539012825/
https://www.imdb.com/list/title/ls539012825/
https://www.imdb.com/list/ls539012825/?kwmoY
https://www.imdb.com/list/ls539012849/
https://www.imdb.com/list/title/ls539012849/
https://www.imdb.com/list/ls539012849/?SnHXW
https://www.imdb.com/list/ls539014000/
https://www.imdb.com/list/title/ls539014000/
https://www.imdb.com/list/ls539014000/?pWT35
https://www.imdb.com/list/ls539014050/
https://www.imdb.com/list/title/ls539014050/
https://www.imdb.com/list/ls539014050/?18MPb
https://www.imdb.com/list/ls539014019/
https://www.imdb.com/list/title/ls539014019/
https://www.imdb.com/list/ls539014019/?DXf7W
https://www.imdb.com/list/ls539014020/
https://www.imdb.com/list/title/ls539014020/
https://www.imdb.com/list/ls539014020/?75GDC
https://www.imdb.com/list/ls539014084/
https://www.imdb.com/list/title/ls539014084/
https://www.imdb.com/list/ls539014084/?x90MO
https://www.imdb.com/list/ls539014579/
https://www.imdb.com/list/title/ls539014579/
https://www.imdb.com/list/ls539014579/?2KnMS
https://www.imdb.com/list/ls539014504/
https://www.imdb.com/list/title/ls539014504/
https://www.imdb.com/list/ls539014504/?yJIdx
https://www.imdb.com/list/ls539014532/
https://www.imdb.com/list/title/ls539014532/
https://www.imdb.com/list/ls539014532/?Vqp94
https://www.imdb.com/list/ls539014542/
https://www.imdb.com/list/title/ls539014542/
https://www.imdb.com/list/ls539014542/?1Ed0S
https://www.imdb.com/list/ls539014598/
https://www.imdb.com/list/title/ls539014598/
https://www.imdb.com/list/ls539014598/?gl9ON
https://www.imdb.com/list/ls539014708/
https://www.imdb.com/list/title/ls539014708/
https://www.imdb.com/list/ls539014708/?dTO79
https://www.imdb.com/list/ls539014779/
https://www.imdb.com/list/title/ls539014779/
https://www.imdb.com/list/ls539014779/?3LEB6
https://www.imdb.com/list/ls539014739/
https://www.imdb.com/list/title/ls539014739/
https://www.imdb.com/list/ls539014739/?7yt0l
https://www.imdb.com/list/ls539014727/
https://www.imdb.com/list/title/ls539014727/
https://www.imdb.com/list/ls539014727/?iWA98
https://www.imdb.com/list/ls539014799/
https://www.imdb.com/list/title/ls539014799/
https://www.imdb.com/list/ls539014799/?6tyFb
https://www.imdb.com/list/ls539014545/
https://www.imdb.com/list/title/ls539014545/
https://www.imdb.com/list/ls539014545/?62FP9
https://www.imdb.com/list/ls539014135/
https://www.imdb.com/list/title/ls539014135/
https://www.imdb.com/list/ls539014135/?WHQSz
https://www.imdb.com/list/ls539014308/
https://www.imdb.com/list/title/ls539014308/
https://www.imdb.com/list/ls539014308/?fJ2Z1
https://www.imdb.com/list/ls539014362/
https://www.imdb.com/list/title/ls539014362/
https://www.imdb.com/list/ls539014362/?DzApv
https://www.imdb.com/list/ls539014454/
https://www.imdb.com/list/title/ls539014454/
https://www.imdb.com/list/ls539014454/?jwF7G
https://www.imdb.com/list/ls539014414/
https://www.imdb.com/list/title/ls539014414/
https://www.imdb.com/list/ls539014414/?r59P0
https://www.imdb.com/list/ls539014432/
https://www.imdb.com/list/title/ls539014432/
https://www.imdb.com/list/ls539014432/?dQWa4
https://www.imdb.com/list/ls539014428/
https://www.imdb.com/list/title/ls539014428/
https://www.imdb.com/list/ls539014428/?EQW4g
https://www.imdb.com/list/ls539014494/
https://www.imdb.com/list/title/ls539014494/
https://www.imdb.com/list/ls539014494/?3Yh6C
https://www.imdb.com/list/ls539014955/
https://www.imdb.com/list/title/ls539014955/
https://www.imdb.com/list/ls539014955/?mGC32
https://www.imdb.com/list/ls539014910/
https://www.imdb.com/list/title/ls539014910/
https://www.imdb.com/list/ls539014910/?21Ead
https://www.imdb.com/list/ls539014963/
https://www.imdb.com/list/title/ls539014963/
https://www.imdb.com/list/ls539014963/?d0m7R
https://www.imdb.com/list/ls539014946/
https://www.imdb.com/list/title/ls539014946/
https://www.imdb.com/list/ls539014946/?LQVyF
https://www.imdb.com/list/ls539014989/
https://www.imdb.com/list/title/ls539014989/
https://www.imdb.com/list/ls539014989/?4hedT
https://www.imdb.com/list/ls539014986/
https://www.imdb.com/list/title/ls539014986/
https://www.imdb.com/list/ls539014986/?Q40tJ
https://www.imdb.com/list/ls539014875/
https://www.imdb.com/list/title/ls539014875/
https://www.imdb.com/list/ls539014875/?qs9th
https://www.imdb.com/list/ls539014852/
https://www.imdb.com/list/title/ls539014852/
https://www.imdb.com/list/ls539014852/?vzdkQ
https://www.imdb.com/list/ls539014832/
https://www.imdb.com/list/title/ls539014832/
https://www.imdb.com/list/ls539014832/?82t4W
https://www.imdb.com/list/ls539014839/
https://www.imdb.com/list/title/ls539014839/
https://www.imdb.com/list/ls539014839/?v9147
https://www.imdb.com/list/ls539014827/
https://www.imdb.com/list/title/ls539014827/
https://www.imdb.com/list/ls539014827/?pdX8T
https://www.imdb.com/list/ls539014825/
https://www.imdb.com/list/title/ls539014825/
https://www.imdb.com/list/ls

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值