生成CSV文件时如何处理分号?

时间:2015-05-01 13:45:57

标签: node.js csv npm

我正在使用NPM模块json-csv从对象数组生成CSV文件。但是,某些字段可能包含分号(;),显然CSV会以分号分割,尽管引用了此字段。任何人都可以就如何解决这个问题提出任何建议吗?

我用于选项的代码如下:

var options = {
  fields: [
    {
      name : 'paragraphId',
      label : 'ParagraphID'
    },
    {
      name : 'paragraph',
      label : 'Paragraph',
      quoted : true
    }
  ]
};

1 个答案:

答案 0 :(得分:2)

根据CSV规范,可以中包含分隔符,只要用双引号括起这些值即可。来自CSV specification

  

包含逗号的字段必须使用双引号字符分隔。

  

字段可能始终用双引号分隔。   分隔符将永远被丢弃。

在使用json-csv库导出数据时触发此行为的选项在给定字段的选项中为quoted: true - 我看到您已将其包含在内,因此您可以使用,。好的。

另外 - 值得注意的是,此库默认使用逗号(;)作为分隔符,而不是分号(var options = { fields: [ { name: 'paragraphId', label: 'ParagraphID' }, { name: 'paragraph', label: 'Paragraph', quoted: true }], fieldSeparator: ';' // the important part! }; )。要使用不同的分隔符,请正确更改选项:

def tau_gamma_correct(pixel_channel):
    pixel_channel = pixel_channel**(1/2.2)
    return pixel_channel

#@param: rgb
#@result: returns grayscale value
def gleam(rgb):
    #convert rgb tuple to list
    rgblist = list(rgb)
    #gamma correct each rgb channel
    rgblist[0] = tau_gamma_correct(rgblist[0])
    rgblist[1] = tau_gamma_correct(rgblist[1])
    rgblist[2] = tau_gamma_correct(rgblist[2])
    grayscale = 1/3*(rgblist[0] + rgblist[1] + rgblist[2])
    return grayscale

# get a glob list of jpg filenames
files = glob.glob('*.jpg')
for file in files:
    file = open(file)
    filename = file.name
    image = Image.open(file)
    pix = image.load()
    width, height = image.size
    #print(width,height)
    for x in range(0, width):
        for y in range(0, height):
            rgb = pix[x,y]
            #print(rgb)
            # calc new pixel value and set to pixel
            image.mode = 'L'
            pix[x,y] = gleam(rgb)

            image.save(filename + 'gray.gleam'+'.jpg')
   file.close()