编辑CSV文件以免破坏数据



HFLabs产品的工业批量处理数据:地址,全名,公司详细信息,甚至总计运输。 自然,测试人员每天都会处理这些数据:更新测试用例,研究清洁结果。 通常,客户为测试人员提供“实时”基础,以为其配置服务。

我们教导新的质量保证的第一件事是将数据保存为原始格式。 一切根据约:“不要伤害。” 在本文中,我将向您展示如何在Excel和Open Office中谨慎使用CSV文件。 提示将有助于避免损坏任何东西,在编辑后保存信息,并且通常会使您更有信心。

材料是基础,专业人员一定会感到无聊。

什么是CSV文件?


CSV格式用于将表存储在文本文件中。 数据通常打包到表中,因此CSV文件非常受欢迎。


CSV文件由数据行和指示列边界的定界符组成

CSV代表逗号分隔的值,即“用逗号分隔的值”。 但是不要被名称所迷惑:分号和制表符都可以用作CSV文件中的列分隔符。 它仍然是CSV文件。

CSV与相同的Excel格式相比有很多优点:文本文件像按钮一样简单,可以快速打开,可以在任何设备和任何环境下阅读,而无需其他工具。

由于其优点,CSV是一种非常流行的数据交换格式,尽管它已有40多年的历史了,但是CSV使用工业应用程序时会从数据库中下载数据。

一个问题-使用CSV的文本编辑器是不够的。 不过,如果表很简单:在第一个字段中,ID的长度是相同的,在第二个字段中,日期的格式是相同的,而在第三个字段中,则有一些地址。 但是,当不同长度的字段超过三个时,就会开始折磨。


跟踪分隔线和列-您不知所措

数据分析甚至更糟-尝试使用记事本至少将所有数字添加到一列中。 我不是在谈论漂亮的图形。

因此,可以在Excel及其类似物( Open OfficeLibreOffice等)中分析和编辑CSV文件。

对于仍然阅读以下内容的老手:伙计们,我们直接使用SQL在数据库中了解分析,我们了解TableauTalend Open Studio 本文适用于初学者,但是从基本的角度来讲,少量的带有类似物的Excel数据就足够了。

Excel如何弄乱数据:经典著作


一切都很好,但是Excel几乎没有打开CSV文件,就开始了狡猾的把戏。 他无需需求即可更改数据,因此它们变得毫无价值。 而且他完全没有引起注意。 因此,我们一次抓住了许多问题。

大多数事件是由于该程序将具有一组数字的字符串转换为不需要数字的事实。

四舍五入。 例如,在原始单元中,两个电话以逗号分隔存储,没有空格:“ 5235834.5235835”。 Excel将做什么? 著名地将数字转换为一个数字,然后四舍五入到小数点后两位:“ 5235834.52”。 因此,我们丢失了第二部手机。

导致指数形式。 Excel会仔细将“ 123456789012345”转换为数字“ 1,2E + 15”。 我们完全失去了原来的价值。

该问题与十五个数字行的长字符有关。 例如,CLADR代码(这是地址对象的状态标识符:城市,街道,房屋)。

消除领先优势。 Excel认为带数字的行开头的加号是完全多余的字符。 就像,而且很明显,这个数字是正数,因为它前面没有减号。 因此,数字“ +74955235834”中的前导加号将被不必要地丢弃-结果将为“ 74955235834”。 (实际上,这个数字将遭受更大的损失,但为清楚起见,我会顺加加算)。

例如,如果数据进入第三方系统,并且导入时严格检查格式,则丢失正号至关重要。

分解三位数。 Excel是一个很好的灵魂,它将解析长度超过三个字符的数字字符串。 例如,“ 8 495 5235834”将变成“ 84 955 235 834”。

格式至少对于电话号码很重要:空格将国家和城市代码与电话号码的其余部分相互分隔。 Excel容易违反电话的正确划分。

删除前导零。 Excel会将字符串“ 00523446”转换为“ 523446”。
例如,在TIN中,前两位数字是区域代码。 对于阿尔泰共和国,它从头开始-“ 04”。 如果没有零,则数字的含义将失真,并且INN格式检查将完全失败。

将日期更改为本地设置。 Excel会很乐意将门牌号“ 1/2”更正为“ 2月1日”。 因为Windows以这种形式建议这样做,所以您阅读日期更加方便。

我们通过适当的导入来消除数据损坏


但是,认真的说,Excel不能怪麻烦,而是将数据导入程序的一种不明显的方法。

默认情况下,Excel将常规类型应用于下载的CSV文件中的数据-常规类型。 因此,该程序将数字字符串识别为数字。 可以使用内置的导入工具取消此订单。

我在Excel中启动内置的导入机制。 在菜单中,它是“数据→获取外部数据→来自文本”。

我选择一个包含数据的CSV文件,将打开一个对话框。 在对话框中,单击“分隔”(分隔)文件类型。 编码-文件中的一个通常是自动确定的。 如果文件的第一行是标题,则标记为“我的数据具有标题”。

我进入对话的第二步。 我选择字段分隔符(通常是分号-分号)。 我关闭“将连续定界符视为一个”,并将“文本限定符”设置为“ {none}”。 (文本限定符是文本开头和结尾的符号。如果CSV中的定界符是逗号,则需要使用文本限定符来区分文本内部的逗号和分隔符。)

在第三步中,我选择字段的格式 ,因此一切都开始了。 对于所有列,我将类型设置为“文本”。 顺便说一句,如果您单击第一列,请按住shift键并单击最后一列,所有列将立即突出显示。 方便。

接下来,Excel将询问从CSV粘贴数据的位置-您只需单击“确定”,数据就会显示在打开的工作表中。


导入之前,您必须在Excel中创建一个新的工作簿

但是! 如果我打算通过Excel将数据添加到CSV,则还有其他事情要做。

导入后,必须将工作表上的所有单元格强制设置为“文本”格式。 否则,新字段将获得相同的常规类型。

  • 我按Ctrl + A两次,Excel将选择工作表上的所有单元格;
  • 我单击鼠标右键;
  • 我在上下文菜单中选择“设置单元格格式”;
  • 在打开的对话框中,选择左侧的“文本”数据类型。


要选择所有单元格,需要按Ctrl + A两次。 正好两个,这不是在开玩笑,试试

之后,如果运气好的话,Excel将不理会原始数据。 但这不是最困难的保证,因此保存后,我们一定会通过文本查看器检查文件。

替代方案:Open Office Calc


要使用CSV文件,我使用Calc。 这并不是说它根本不会将数字数据视为字符串,而是至少不会根据Windows的区域设置对其重新格式化。 是的,导入更简单。

当然,您将需要开放办公室(OO)软件包。 在安装过程中,他将提供重新分配MS Office文件的权限。 我不建议:尽管OO具有相当的功能,但它不能完全理解Microsoft棘手的文档格式。

但是使OO成为CSV文件的默认程序是很合理的。 您可以在安装软件包后执行此操作。

因此,我们开始从CSV导入数据。 双击文件后,Open Office将显示一个对话框。


请注意,在OO中,您无需自己创建新工作簿并强制开始导入

  1. 编码-如文件中所示。
  2. “分隔符”是分号。 自然,如果恰好是文件中的分隔符。
  3. “文本分隔符”-空(与Excel中的所有相同)。
  4. 在“字段”部分中,单击表的左上角正方形,所有列均突出显示。 我指出“文本”的类型。

一件事情被宠坏了:如果您错误地选择了多个字段分隔符或错误的文本被分割,该文件可能会正确打开,但可能会错误地保存。

除了Calc之外,libreOffice在HFLabs中也很流行,尤其是在Linux下。 与Excel相比,它们对CSV的使用更为活跃。

奖励轨道:从Calc保存到.xlsx时出现问题


如果将数据从Calc保存为Excel .xlsx格式,请记住-有时会莫名其妙地发生OO,并且会丢失大量数据。


中间的白色荒原充满了原始CSV文件中的数据

因此,保存后,我再次打开文件并确保数据到位。

如果丢失了某些东西,处理方法是从CSV保存到.xlsx。 或者,如果已安装Windows,请从CSV导入到Excel并从中保存。

重新保存后,我肯定会再次检查所有数据是否都到位,并且没有多余的空行。

如果您有兴趣使用数据,请查看我们的职位空缺 HFLabs几乎总是需要分析师,测试人员,实施工程师,开发人员。 我们将提供数据,以便几乎没有出现:)

Source: https://habr.com/ru/post/zh-CN432906/


All Articles