CN108763175A - 一种csv文件处理方法及系统 - Google Patents
一种csv文件处理方法及系统 Download PDFInfo
- Publication number
- CN108763175A CN108763175A CN201810672557.8A CN201810672557A CN108763175A CN 108763175 A CN108763175 A CN 108763175A CN 201810672557 A CN201810672557 A CN 201810672557A CN 108763175 A CN108763175 A CN 108763175A
- Authority
- CN
- China
- Prior art keywords
- field
- english
- csv file
- data line
- quotation marks
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 13
- 238000000034 method Methods 0.000 claims abstract description 17
- 238000007689 inspection Methods 0.000 claims abstract description 16
- 238000010586 diagram Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000004321 preservation Methods 0.000 description 2
- 235000013399 edible fruits Nutrition 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/126—Character encoding
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Document Processing Apparatus (AREA)
Abstract
本申请公开了一种CSV文件处理方法及系统,方法包括:从待生成CSV文件的数据源中读取每一行数据,对从源数据中读取的每一行数据的每一个字段进行检查处理,形成新的数据行,对数据行按不同的编码格式生成同一份CSV文件的不同的版本。本申请能够使CSV文件占用磁盘的空间大小减少,使操作CSV文件的速度变快,能够使CSV文件正确显示且不出现乱码,提升了用户体验。
Description
技术领域
本申请属于数据处理技术领域,尤其涉及一种CSV(Comma-Separated Values,字符分隔值)文件处理方法及系统。
背景技术
在人们的日常办公中,人们经常会使用到excel文件,但是excel软件在打开excel文件时,需要对excel文件中的每一个单元格都进行渲染,当excel文件的数据量很大时,如有100万行,往往对excel文件的操作(如打开、修改、查找、保存等)会非常慢,甚至常常出现卡顿。这时,采用将数据存在CSV文件中,然后用excel软件打开CSV文件的方式,则对CSV文件的操作会比较快,不会出现操作excel文件时的各种卡顿。
如果创建excel文件的excel软件是某一个版本,而打开excel文件的excel软件如果是另一个版本的话,则很容易出现打开失败的问题,而采用将数据存在CSV文件中,然后用excel软件打开CSV文件的方式,则不会出现这种问题。
CSV文件使用英文逗号分隔的文本文件,默认是被excel软件打开的,文件中的字段一般用英文的双引号括起来,如”字段1”,”字段2”,”字段3”,”字段4”,”字段5”。CSV文件中的字段不用英文的双引号括起来,excel软件也能打开。对于文件中的字段用英文的双括号括起来,带来了一个造成了存储空间变大的问题,如一百万行,每行有20多列的CSV文件占用的磁盘大小大概可能有100M,在去掉每个字段括起来的英文双引号之后,该CSV文件占用的磁盘大小减少到60、70M,这些在CSV文件中不具有实际意义的英文双引号占用到的磁盘大小达到30、40M,提供的信息量与所占用的磁盘大小不成正比。除了造成文件磁盘空间大之后,而且另一个方面的问题是,文件越大,对文件的相关操作(打开、修改、查找、保存等)就会变慢,影响了操作效率和使用体验。
因此,如何有效的对CSV文件进行处理,以使CSV文件能够快速和正确的显示是一项亟待解决的问题。
发明内容
有鉴于此,本申请提供了一种CSV文件处理方法,能够实现快速显示和正确显示CSV文件,提升了用户体验。
本申请提供了一种CSV文件处理方法,包括:
从待生成CSV文件的数据源中读取每一行数据;
对从所述源数据中读取的每一行数据的每一个字段进行检查处理,形成新的数据行;
对所述数据行按不同的编码格式生成同一份CSV文件的不同的版本。
优选地,所述对从所述源数据中读取的每一行数据的每一个字段进行检查处理,形成新的数据行包括:
判断字段中是否包含有英文逗号,若有,则字段括上英文双引号;
判断字段的前缀是否是0,若是,则在第一个英文引号前再加上一个等号。
优选地,所述对从所述源数据中读取的每一行数据的每一个字段进行检查处理,形成新的数据行还包括:
判断字段是否是数值且前缀是否为0或数值大于等于千亿,若是,则加上等号和英文双引号。
优选地,所述对从所述源数据中读取的每一行数据的每一个字段进行检查处理,形成新的数据行还包括:
判断字段中是否包含有空白字符,若有,则去掉所述空白字符。
优选地,所述空白字符包括:回车换行符、回车符、换行符、tab符。
一种CSV文件处理系统,包括:
源数据读取模块,用于从待生成CSV文件的数据源中读取每一行数据;
字段处理模块,用于对从所述源数据中读取的每一行数据的每一个字段进行检查处理,形成新的数据行;
编码生成模块,用于对所述数据行按不同的编码格式生成同一份CSV文件的不同的版本。
优选地,所述字段处理模块具体用于:
判断字段中是否包含有英文逗号,若有,则字段括上英文双引号;
判断字段的前缀是否是0,若是,则在第一个英文引号前再加上一个等号。
优选地,所述字段处理模块具体还用于:
判断字段是否是数值且前缀是否为0或数值大于等于千亿,若是,则加上等号和英文双引号。
优选地,所述字段处理模块具体还用于:
判断字段中是否包含有空白字符,若有,则去掉所述空白字符。
优选地,所述空白字符包括:回车换行符、回车符、换行符、tab符。
综上所述,本申请公开了一种CSV文件处理方法,当需要对CSV文件进行处理时,首先从待生成CSV文件的数据源中读取每一行数据,然后对从源数据中读取的每一行数据的每一个字段进行检查处理,形成新的数据行,对数据行按不同的编码格式生成同一份CSV文件的不同的版本,能够使CSV文件占用磁盘的空间大小减少,使操作CSV文件的速度变快,能够使CSV文件正确显示且不出现乱码,提升了用户体验。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请公开的一种CSV文件处理方法实施例1的流程图;
图2为本申请公开的一种CSV文件处理方法实施例2的流程图;
图3为本申请公开的一种CSV文件处理方法实施例3的流程图
图4为本申请公开的一种CSV文件处理系统实施例1的结构示意图;
图5为本申请公开的一种CSV文件处理系统实施例2的结构示意图;
图6为本申请公开的一种CSV文件处理系统实施例3的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
如图1所示,为本申请公开一种CSV文件处理方法实施例1的流程图,所述方法可以包括以下步骤:
S101、从待生成CSV文件的数据源中读取每一行数据;
当需要对CSV文件进行处理时,首先从要生成CSV文件的数据源中一行一行的读取数据。
S102、对从源数据中读取的每一行数据的每一个字段进行检查处理,形成新的数据行;
S103、对数据行按不同的编码格式生成同一份CSV文件的不同的版本。
对于经过字段处理后形成的新的数据行,按不同的编码格式生成不同版本的CSV文件。
综上所述,在上述实施例中,当需要对CSV文件进行处理时,首先从待生成CSV文件的数据源中读取每一行数据,然后对从源数据中读取的每一行数据的每一个字段进行检查处理,形成新的数据行,对数据行按不同的编码格式生成同一份CSV文件的不同的版本,能够使CSV文件占用磁盘的空间大小减少,使操作CSV文件的速度变快,能够使CSV文件正确显示且不出现乱码,提升了用户体验。
如图2所示,为本申请公开一种CSV文件处理方法实施例2的流程图,所述方法可以包括以下步骤:
S201、从待生成CSV文件的数据源中读取每一行数据;
当需要对CSV文件进行处理时,首先从要生成CSV文件的数据源中一行一行的读取数据。
S202、判断字段中是否包含有英文逗号,若有,则字段括上英文双引号,判断字段的前缀是否是0,若是,则在第一个英文引号前再加上一个等号;
如果字段不带有英文的双引号的话,会带来一个问题,就是如果字段中带有英文逗号的话,那这个英文逗号就被认为是字段的分隔符,原本是一个字段的数据会被识别为了两个字段,用excel来显示的时候会错位,造成数据显示不正确。如某某公司的英文名往往带有“Co.,Ltd”,如“XXX Co.,Ltd”,如果在CSV中不加英文的双引号的话,则会被识别为两个字段,显示为XXX Co.和Ltd;又如带有千位分隔符的数值,因为千位分隔符是英文逗号,如果不括上英文双引号的话,原先是一个数值的数就会被显示为多个数。因此对于字段中含有英文逗号的话,则需在这个字段的两边括上英文的双引号。
对于一类数值,以0作为前缀的数值,如银行会用到的机构号003、019,用excel打开CSV文件中这样的数据显示时,数值前面的0会被去掉,只显示为3和19。就算在这样的字段加上英文的双引号,显示的时候前面的0也会被去掉。在这类字段上括上英文的双引号,再在第一个英文引号前面加上一个等号(如=”003”,=”019”),就能够正常地显示了。另外对于带有千位分隔符的数值,因为千位分隔符是英文逗号,如果不括上英文双引号的话,原先是一个数值的数就会被显示为多个数,如果该带有千位分隔符的数值的前缀是0,如果不在第一个英文引号前面加上一个等号的话,该数值前面的0就不会显示,显示就不正确了。
S203、判断字段是否是数值且前缀是否为0或数值大于等于千亿,若是,则加上等号和英文双引号;
对于比较大的数值(如千亿的数值及以上)的话,如果用excel打开CSV文件来显示的话,大的数值会被显示为科学计数法(如123456789012会被显示为1.23457E+11,即使拉大单元格的宽度,也是显示为科学计数法),而我们实际想要的是显示具体的数值,对于我们来说,这个较大的数值的每一位对我们来说都是有意义的,因此是不能省略部分尾数记为科学计数法的。在这样的字段上括上英文的双引号,也不能让这样的字段正确显示。在这样的字段上括上英文的双引号,在第一个英文引号前面再加上一个等号,就能让这样的数值字段正常显示,如=”123456789012”。因此对于数值之类,必须在这类字段上括上英文的双引号,再在第一个英文引号前面加上一个等号,类似于强制以字符串显示的形式,以显示数值的实际具体数值。
S204、对数据行按不同的编码格式生成同一份CSV文件的不同的版本。
对于不同的系统环境,excel默认打开CSV文件所用的编码是不同的。如可能有的windows系统是默认用ANSI编码来打开CSV文件,而有的windows系统则是默认用UTF8编码来打开CSV文件的,而另外有的windows系统可能则是默认用本地编码(如GBK)来打开CSV文件的。如果使用的编码跟CSV文件本身的编码不同的话,显示的时候会出现乱码。在生成的时候使用不同的编码生成同一份CSV文件的不同编码的版本,能够有效地避免显示的时候出现乱码的情况。
综上所述,本申请通过不对CSV文件中的字段加英文双引号的方法,减少了CSV文件存储的磁盘大小,提高了CSV文件的操作效率和使用体验;通过对带有英文逗号的字段加上英文双引号,避免了公司名之类的数据被错误显示;通过对含有英文逗号且前缀是0的字段加上等号和英文双引号,避免了千位分隔符格式的数值之类的数据被错误显示;通过对前缀为0或数值大于等于千亿的字段加上等号和英文双引号,避免了机构号之类的数据被错误显示或较大的数值之类的数据被显示成科学计数法;通过生成不同编码的数据版本,避免了在不同系统环境下,CSV文件打开乱码的情况。
如图3所示,为本申请公开一种CSV文件处理方法实施例3的流程图,所述方法可以包括以下步骤:
S301、从待生成CSV文件的数据源中读取每一行数据;
当需要对CSV文件进行处理时,首先从要生成CSV文件的数据源中一行一行的读取数据。
S302、判断字段中是否包含有空白字符,若有,则去掉空白字符;
当从待生成CSV文件的数据源中读取每一行数据后,进一步对从源数据中读取的每一行的每一个字段进行检查处理,形成新的数据行。在对从源数据中读取的每一行的每一个字段进行检查处理,形成新的数据行时,包括判断新的数据行中是否包含有回车换行符、回车符、换行符、tab符,当包含有回车换行符、回车符、换行符、tab符时,将回车换行符、回车符、换行符、tab符删除。
S303、判断字段中是否包含有英文逗号,若有,则字段括上英文双引号,判断字段的前缀是否是0,若是,则在第一个英文引号前再加上一个等号;
如果字段不带有英文的双引号的话,会带来一个问题,就是如果字段中带有英文逗号的话,那这个英文逗号就被认为是字段的分隔符,原本是一个字段的数据会被识别为了两个字段,用excel来显示的时候会错位,造成数据显示不正确。如某某公司的英文名往往带有“Co.,Ltd”,如“XXX Co.,Ltd”,如果在CSV中不加英文的双引号的话,则会被识别为两个字段,显示为XXX Co.和Ltd;又如带有千位分隔符的数值,因为千位分隔符是英文逗号,如果不括上英文双引号的话,原先是一个数值的数就会被显示为多个数。因此对于字段中含有英文逗号的话,则需在这个字段的两边括上英文的双引号。
对于一类数值,以0作为前缀的数值,如银行会用到的机构号003、019,用excel打开CSV文件中这样的数据显示时,数值前面的0会被去掉,只显示为3和19。就算在这样的字段加上英文的双引号,显示的时候前面的0也会被去掉。在这类字段上括上英文的双引号,再在第一个英文引号前面加上一个等号(如=”003”,=”019”),就能够正常地显示了。另外对于带有千位分隔符的数值,因为千位分隔符是英文逗号,如果不括上英文双引号的话,原先是一个数值的数就会被显示为多个数,如果该带有千位分隔符的数值的前缀是0,如果不在第一个英文引号前面加上一个等号的话,该数值前面的0就不会显示,显示就不正确了。
S304、判断字段是否是数值且前缀是否为0或数值大于等于千亿,若是,则加上等号和英文双引号;
对于比较大的数值(如千亿的数值及以上)的话,如果用excel打开CSV文件来显示的话,大的数值会被显示为科学计数法(如123456789012会被显示为1.23457E+11,即使拉大单元格的宽度,也是显示为科学计数法),而我们实际想要的是显示具体的数值,对于我们来说,这个较大的数值的每一位对我们来说都是有意义的,因此是不能省略部分尾数记为科学计数法的。在这样的字段上括上英文的双引号,也不能让这样的字段正确显示。在这样的字段上括上英文的双引号,在第一个英文引号前面再加上一个等号,就能让这样的数值字段正常显示,如=”123456789012”。因此对于数值之类,必须在这类字段上括上英文的双引号,再在第一个英文引号前面加上一个等号,类似于强制以字符串显示的形式,以显示数值的实际具体数值。
S305、对数据行按不同的编码格式生成同一份CSV文件的不同的版本。
对于不同的系统环境,excel默认打开CSV文件所用的编码是不同的。如可能有的windows系统是默认用ANSI编码来打开CSV文件,而有的windows系统则是默认用UTF8编码来打开CSV文件的,而另外有的windows系统可能则是默认用本地编码(如GBK)来打开CSV文件的。如果使用的编码跟CSV文件本身的编码不同的话,显示的时候会出现乱码。在生成的时候使用不同的编码生成同一份CSV文件的不同编码的版本,能够有效地避免显示的时候出现乱码的情况。
综上所述,本申请通过不对CSV文件中的字段加英文双引号的方法,减少了CSV文件存储的磁盘大小,提高了CSV文件的操作效率和使用体验;通过对带有英文逗号的字段加上英文双引号,避免了公司名之类的数据被错误显示;通过对含有英文逗号且前缀是0的字段加上等号和英文双引号,避免了千位分隔符格式的数值之类的数据被错误显示;通过对前缀为0或数值大于等于千亿的字段加上等号和英文双引号,避免了机构号之类的数据被错误显示或较大的数值之类的数据被显示成科学计数法;通过生成不同编码的数据版本,避免了在不同系统环境下,CSV文件打开乱码的情况。
如图4所示,为本申请公开一种CSV文件处理系统实施例1的结构示意图,所述系统可以包括:
源数据读取模块401,用于从待生成CSV文件的数据源中读取每一行数据;
当需要对CSV文件进行处理时,首先从要生成CSV文件的数据源中一行一行的读取数据。
字段处理模块402,用于对从源数据中读取的每一行数据的每一个字段进行检查处理,形成新的数据行;
编码生成模块403,用于对数据行按不同的编码格式生成同一份CSV文件的不同的版本。
对于经过字段处理后形成的新的数据行,按不同的编码格式生成不同版本的CSV文件。
综上所述,在上述实施例中,当需要对CSV文件进行处理时,首先从待生成CSV文件的数据源中读取每一行数据,然后对从源数据中读取的每一行数据的每一个字段进行检查处理,形成新的数据行,对数据行按不同的编码格式生成同一份CSV文件的不同的版本,能够使CSV文件占用磁盘的空间大小减少,使操作CSV文件的速度变快,能够使CSV文件正确显示且不出现乱码,提升了用户体验。
如图5所示,为本申请公开一种CSV文件处理系统实施例2的结构示意图,所述系统可以包括:
源数据读取模块501,用于从待生成CSV文件的数据源中读取每一行数据;
当需要对CSV文件进行处理时,首先从要生成CSV文件的数据源中一行一行的读取数据。
字段处理模块502,用于判断字段中是否包含有英文逗号,若有,则字段括上英文双引号,判断字段的前缀是否是0,若是,则在第一个英文引号前再加上一个等号;
如果字段不带有英文的双引号的话,会带来一个问题,就是如果字段中带有英文逗号的话,那这个英文逗号就被认为是字段的分隔符,原本是一个字段的数据会被识别为了两个字段,用excel来显示的时候会错位,造成数据显示不正确。如某某公司的英文名往往带有“Co.,Ltd”,如“XXX Co.,Ltd”,如果在CSV中不加英文的双引号的话,则会被识别为两个字段,显示为XXX Co.和Ltd;又如带有千位分隔符的数值,因为千位分隔符是英文逗号,如果不括上英文双引号的话,原先是一个数值的数就会被显示为多个数。因此对于字段中含有英文逗号的话,则需在这个字段的两边括上英文的双引号。
对于一类数值,以0作为前缀的数值,如银行会用到的机构号003、019,用excel打开CSV文件中这样的数据显示时,数值前面的0会被去掉,只显示为3和19。就算在这样的字段加上英文的双引号,显示的时候前面的0也会被去掉。在这类字段上括上英文的双引号,再在第一个英文引号前面加上一个等号(如=”003”,=”019”),就能够正常地显示了。另外对于带有千位分隔符的数值,因为千位分隔符是英文逗号,如果不括上英文双引号的话,原先是一个数值的数就会被显示为多个数,如果该带有千位分隔符的数值的前缀是0,如果不在第一个英文引号前面加上一个等号的话,该数值前面的0就不会显示,显示就不正确了。
字段处理模块502,还用于判断字段是否是数值且前缀是否为0或数值大于等于千亿,若是,则加上等号和英文双引号;
对于比较大的数值(如千亿的数值及以上)的话,如果用excel打开CSV文件来显示的话,大的数值会被显示为科学计数法(如123456789012会被显示为1.23457E+11,即使拉大单元格的宽度,也是显示为科学计数法),而我们实际想要的是显示具体的数值,对于我们来说,这个较大的数值的每一位对我们来说都是有意义的,因此是不能省略部分尾数记为科学计数法的。在这样的字段上括上英文的双引号,也不能让这样的字段正确显示。在这样的字段上括上英文的双引号,在第一个英文引号前面再加上一个等号,就能让这样的数值字段正常显示,如=”123456789012”。因此对于数值之类,必须在这类字段上括上英文的双引号,再在第一个英文引号前面加上一个等号,类似于强制以字符串显示的形式,以显示数值的实际具体数值。
编码生成模块503,用于对数据行按不同的编码格式生成同一份CSV文件的不同的版本。
对于不同的系统环境,excel默认打开CSV文件所用的编码是不同的。如可能有的windows系统是默认用ANSI编码来打开CSV文件,而有的windows系统则是默认用UTF8编码来打开CSV文件的,而另外有的windows系统可能则是默认用本地编码(如GBK)来打开CSV文件的。如果使用的编码跟CSV文件本身的编码不同的话,显示的时候会出现乱码。在生成的时候使用不同的编码生成同一份CSV文件的不同编码的版本,能够有效地避免显示的时候出现乱码的情况。
综上所述,本申请通过不对CSV文件中的字段加英文双引号的方法,减少了CSV文件存储的磁盘大小,提高了CSV文件的操作效率和使用体验;通过对带有英文逗号的字段加上英文双引号,避免了公司名之类的数据被错误显示;通过对含有英文逗号且前缀是0的字段加上等号和英文双引号,避免了千位分隔符格式的数值之类的数据被错误显示;通过对前缀为0或数值大于等于千亿的字段加上等号和英文双引号,避免了机构号之类的数据被错误显示或较大的数值之类的数据被显示成科学计数法;通过生成不同编码的数据版本,避免了在不同系统环境下,CSV文件打开乱码的情况。
如图6所示,为本申请公开一种CSV文件处理系统实施例3的结构示意图,所述系统可以包括:
源数据读取模块601,用于从待生成CSV文件的数据源中读取每一行数据;
当需要对CSV文件进行处理时,首先从要生成CSV文件的数据源中一行一行的读取数据。
字段处理模块602,用于判断字段中是否包含有空白字符,若有,则去掉空白字符;
当从待生成CSV文件的数据源中读取每一行数据后,进一步对从源数据中读取的每一行的每一个字段进行检查处理,形成新的数据行。在对从源数据中读取的每一行的每一个字段进行检查处理,形成新的数据行时,包括判断新的数据行中是否包含有回车换行符、回车符、换行符、tab符,当包含有回车换行符、回车符、换行符、tab符时,将回车换行符、回车符、换行符、tab符删除。
字段处理模块602,还用于判断字段中是否包含有英文逗号,若有,则字段括上英文双引号,判断字段的前缀是否是0,若是,则在第一个英文引号前再加上一个等号;
如果字段不带有英文的双引号的话,会带来一个问题,就是如果字段中带有英文逗号的话,那这个英文逗号就被认为是字段的分隔符,原本是一个字段的数据会被识别为了两个字段,用excel来显示的时候会错位,造成数据显示不正确。如某某公司的英文名往往带有“Co.,Ltd”,如“XXX Co.,Ltd”,如果在CSV中不加英文的双引号的话,则会被识别为两个字段,显示为XXX Co.和Ltd;又如带有千位分隔符的数值,因为千位分隔符是英文逗号,如果不括上英文双引号的话,原先是一个数值的数就会被显示为多个数。因此对于字段中含有英文逗号的话,则需在这个字段的两边括上英文的双引号。
对于一类数值,以0作为前缀的数值,如银行会用到的机构号003、019,用excel打开CSV文件中这样的数据显示时,数值前面的0会被去掉,只显示为3和19。就算在这样的字段加上英文的双引号,显示的时候前面的0也会被去掉。在这类字段上括上英文的双引号,再在第一个英文引号前面加上一个等号(如=”003”,=”019”),就能够正常地显示了。另外对于带有千位分隔符的数值,因为千位分隔符是英文逗号,如果不括上英文双引号的话,原先是一个数值的数就会被显示为多个数,如果该带有千位分隔符的数值的前缀是0,如果不在第一个英文引号前面加上一个等号的话,该数值前面的0就不会显示,显示就不正确了。
字段处理模块602,还用于判断字段是否是数值且前缀是否为0或数值大于等于千亿,若是,则加上等号和英文双引号;
对于比较大的数值(如千亿的数值及以上)的话,如果用excel打开CSV文件来显示的话,大的数值会被显示为科学计数法(如123456789012会被显示为1.23457E+11,即使拉大单元格的宽度,也是显示为科学计数法),而我们实际想要的是显示具体的数值,对于我们来说,这个较大的数值的每一位对我们来说都是有意义的,因此是不能省略部分尾数记为科学计数法的。在这样的字段上括上英文的双引号,也不能让这样的字段正确显示。在这样的字段上括上英文的双引号,在第一个英文引号前面再加上一个等号,就能让这样的数值字段正常显示,如=”123456789012”。因此对于数值之类,必须在这类字段上括上英文的双引号,再在第一个英文引号前面加上一个等号,类似于强制以字符串显示的形式,以显示数值的实际具体数值。
编码生成模块603,用于对数据行按不同的编码格式生成同一份CSV文件的不同的版本。
对于不同的系统环境,excel默认打开CSV文件所用的编码是不同的。如可能有的windows系统是默认用ANSI编码来打开CSV文件,而有的windows系统则是默认用UTF8编码来打开CSV文件的,而另外有的windows系统可能则是默认用本地编码(如GBK)来打开CSV文件的。如果使用的编码跟CSV文件本身的编码不同的话,显示的时候会出现乱码。在生成的时候使用不同的编码生成同一份CSV文件的不同编码的版本,能够有效地避免显示的时候出现乱码的情况。
综上所述,本申请通过不对CSV文件中的字段加英文双引号的方法,减少了CSV文件存储的磁盘大小,提高了CSV文件的操作效率和使用体验;通过对带有英文逗号的字段加上英文双引号,避免了公司名之类的数据被错误显示;通过对含有英文逗号且前缀是0的字段加上等号和英文双引号,避免了千位分隔符格式的数值之类的数据被错误显示;通过对前缀为0或数值大于等于千亿的字段加上等号和英文双引号,避免了机构号之类的数据被错误显示或较大的数值之类的数据被显示成科学计数法;通过生成不同编码的数据版本,避免了在不同系统环境下,CSV文件打开乱码的情况。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种CSV文件处理方法,其特征在于,包括:
从待生成CSV文件的数据源中读取每一行数据;
对从所述源数据中读取的每一行数据的每一个字段进行检查处理,形成新的数据行;
对所述数据行按不同的编码格式生成同一份CSV文件的不同的版本。
2.根据权利要求1所述的方法,其特征在于,所述对从所述源数据中读取的每一行数据的每一个字段进行检查处理,形成新的数据行包括:
判断字段中是否包含有英文逗号,若有,则字段括上英文双引号;
判断字段的前缀是否是0,若是,则在第一个英文引号前再加上一个等号。
3.根据权利要求2所述的方法,其特征在于,所述对从所述源数据中读取的每一行数据的每一个字段进行检查处理,形成新的数据行还包括:
判断字段是否是数值且前缀是否为0或数值大于等于千亿,若是,则加上等号和英文双引号。
4.根据权利要求3所述的方法,其特征在于,所述对从所述源数据中读取的每一行数据的每一个字段进行检查处理,形成新的数据行还包括:
判断字段中是否包含有空白字符,若有,则去掉所述空白字符。
5.根据权利要求4所述的方法,其特征在于,所述空白字符包括:回车换行符、回车符、换行符、tab符。
6.一种CSV文件处理系统,其特征在于,包括:
源数据读取模块,用于从待生成CSV文件的数据源中读取每一行数据;
字段处理模块,用于对从所述源数据中读取的每一行数据的每一个字段进行检查处理,形成新的数据行;
编码生成模块,用于对所述数据行按不同的编码格式生成同一份CSV文件的不同的版本。
7.根据权利要求6所述的系统,其特征在于,所述字段处理模块具体用于:
判断字段中是否包含有英文逗号,若有,则字段括上英文双引号;
判断字段的前缀是否是0,若是,则在第一个英文引号前再加上一个等号。
8.根据权利要求7所述的系统,其特征在于,所述字段处理模块具体还用于:
判断字段是否是数值且前缀是否为0或数值大于等于千亿,若是,则加上等号和英文双引号。
9.根据权利要求8所述的系统,其特征在于,所述字段处理模块具体还用于:
判断字段中是否包含有空白字符,若有,则去掉所述空白字符。
10.根据权利要求9所述的系统,其特征在于,所述空白字符包括:回车换行符、回车符、换行符、tab符。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810672557.8A CN108763175A (zh) | 2018-06-26 | 2018-06-26 | 一种csv文件处理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810672557.8A CN108763175A (zh) | 2018-06-26 | 2018-06-26 | 一种csv文件处理方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108763175A true CN108763175A (zh) | 2018-11-06 |
Family
ID=63977879
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810672557.8A Pending CN108763175A (zh) | 2018-06-26 | 2018-06-26 | 一种csv文件处理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108763175A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111859871A (zh) * | 2020-07-22 | 2020-10-30 | 中国联合网络通信集团有限公司 | 数据处理方法、装置、设备及计算机可读存储介质 |
CN111898340A (zh) * | 2020-07-30 | 2020-11-06 | 北京字节跳动网络技术有限公司 | 文件的处理方法、设备及可读存储介质 |
CN113642408A (zh) * | 2021-07-15 | 2021-11-12 | 杭州玖欣物联科技有限公司 | 一种工业互联网实时处理解析图片数据的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101789013A (zh) * | 2010-02-04 | 2010-07-28 | 浪潮集团山东通用软件有限公司 | 一种用于描述关系数据的增强型csv文件格式 |
CN106777398A (zh) * | 2017-03-02 | 2017-05-31 | 北京微影时代科技有限公司 | 一种csv文件的生成方法及装置 |
CN107102973A (zh) * | 2017-03-15 | 2017-08-29 | 中国互联网络信息中心 | 一种csv格式文件的数据提取方法及系统 |
US20180101698A1 (en) * | 2016-10-06 | 2018-04-12 | Fujitsu Limited | Encoding method, encoding device, decoding method and decoding device |
-
2018
- 2018-06-26 CN CN201810672557.8A patent/CN108763175A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101789013A (zh) * | 2010-02-04 | 2010-07-28 | 浪潮集团山东通用软件有限公司 | 一种用于描述关系数据的增强型csv文件格式 |
US20180101698A1 (en) * | 2016-10-06 | 2018-04-12 | Fujitsu Limited | Encoding method, encoding device, decoding method and decoding device |
CN106777398A (zh) * | 2017-03-02 | 2017-05-31 | 北京微影时代科技有限公司 | 一种csv文件的生成方法及装置 |
CN107102973A (zh) * | 2017-03-15 | 2017-08-29 | 中国互联网络信息中心 | 一种csv格式文件的数据提取方法及系统 |
Non-Patent Citations (3)
Title |
---|
BIGBEN: "csv中数值被自动转换成科学计数法的问题 excel打开后数字用科学计数法显示且低位变0的解决方法", 《HTTPS://WWW.CNBLOGS.COM/BIGBEN0123/P/6134030.HTML》 * |
ITEYE_4515: "Excel打开CSV文件,数字起始0丢失问题", 《HTTPS://BLOG.CSDN.NET/ITEYE_4515/ARTICLE/DETAILS/81762365》 * |
林立云: "推荐一种读和写CSV文件的程序设计方法", 《2011年全国密码学与信息安全教学研讨会》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111859871A (zh) * | 2020-07-22 | 2020-10-30 | 中国联合网络通信集团有限公司 | 数据处理方法、装置、设备及计算机可读存储介质 |
CN111898340A (zh) * | 2020-07-30 | 2020-11-06 | 北京字节跳动网络技术有限公司 | 文件的处理方法、设备及可读存储介质 |
CN113642408A (zh) * | 2021-07-15 | 2021-11-12 | 杭州玖欣物联科技有限公司 | 一种工业互联网实时处理解析图片数据的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7809795B1 (en) | Linguistic nonsense detection for undesirable message classification | |
US9977780B2 (en) | Generating language sections from tabular data | |
CN108763175A (zh) | 一种csv文件处理方法及系统 | |
US6547830B1 (en) | Methods and apparatuses for display and traversing of links in page character array | |
CN109284145A (zh) | 多语言配置文件的生成和展示方法及装置、设备和介质 | |
US8566080B2 (en) | Method and system for processing text | |
CN110147536B (zh) | 一种基于文件映射的数据处理方法、装置及设备 | |
US9613005B2 (en) | Method and apparatus for bidirectional typesetting | |
US20080052619A1 (en) | Spell Checking Documents with Marked Data Blocks | |
CN110704608A (zh) | 文本主题生成方法、装置和计算机设备 | |
Hussain et al. | Urdu computing standards: Urdu zabta takhti (uzt) 1.01 | |
US10261987B1 (en) | Pre-processing E-book in scanned format | |
CN102982291B (zh) | 可信文件数字签名的获取方法及装置 | |
CN104536947A (zh) | 版式文档的处理方法及装置 | |
CN101562656A (zh) | 通信终端和向其提供统一界面的方法 | |
US20060022029A1 (en) | Keyboard with special symbol key and code exchange method for such key | |
US6470362B1 (en) | Extracting ordered list of words from documents comprising text and code fragments, without interpreting the code fragments | |
CN110543641A (zh) | 一种中外文信息对比方法及装置 | |
CN113268949B (zh) | 基于动态字段的表格展示方法、装置、计算机设备及介质 | |
JP2016031572A (ja) | 用語を適切な粒度で分割する方法、並びに、用語を適切な粒度で分割するためのコンピュータ及びそのコンピュータ・プログラム | |
CN115331247A (zh) | 文档结构识别方法、装置、电子设备及可读存储介质 | |
CN112434197A (zh) | 文本内容的逆向提取方法、装置、设备及存储介质 | |
CN110990593B (zh) | 引用落空检测方法和装置 | |
CN112926314A (zh) | 文档的重复性识别方法、装置、电子设备以及存储介质 | |
US9483463B2 (en) | Method and system for motif extraction in electronic documents |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181106 |