我正在使用NPM模块json-csv从对象数组生成CSV文件。但是,某些字段可能包含分号(;
),显然CSV会以分号分割,尽管引用了此字段。任何人都可以就如何解决这个问题提出任何建议吗?
我用于选项的代码如下:
var options = {
fields: [
{
name : 'paragraphId',
label : 'ParagraphID'
},
{
name : 'paragraph',
label : 'Paragraph',
quoted : true
}
]
};
答案 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()