Chinese, Simplified subtitles

← Using CSV Module - Data Wranging with MongoDB

Get Embed Code
4 Languages

Showing Revision 1 created 08/24/2016 by Udacity Robot.

  1. 我们先讨论一下 CSV 文件
  2. 我说过 字段是由逗号分隔开的
  3. 那如果有一个字段值中含有逗号
  4. 比如这一个 我们应该怎么办呢?
  5. 披头士的这个唱片是在两个不同的唱片公司下发行的
  6. 一个是新西兰的 一个是美国的
  7. 在这个数据集中 这两个不同的唱片公司是直接用逗号分开的
  8. 根据我们目前掌握的 CSV 相关知识
  9. 或者说 我们目前在这节课中讨论过的 CSV 知识
    10
  10. 这就会造成一定的问题
  11. 因为 我们的解析器会把它当作字段的分隔符
  12. 通常情况下 CSV 格式处理它的方法
  13. 或者说 处理 CSV 格式的大多数应用
  14. 处理它的方法是这样的
  15. 可以看到 在 CSV 文件中 这个字段其实是这样的
  16. 在这里我只是把它载入 Google 表格中
  17. 原来的 CSV 文件是这样的
  18. 你可以看到
  19. 在这里 这一行的这个字段加上了引号
  20. 它的意思就是
  21. 你可以忽略从这里到这里的分隔符
  22. 在使用引号时 我们可以选择使用双引号
  23. 你也可以使用单引号
  24. 但这还会造成另一个问题
  25. 可以看到 这里有一个单引号
  26. 这里也有一个引号
  27. 它是专辑名 Sgt Pepper's Lonely Hearts Club Band 中的省字符
  28. 所以 如果我们需要在 Python 程序中
  29. 处理所有各不相同的此类符号
  30. 这个工作量很大 而且很无聊
  31. 事实上 虽然我们称其为 CSV 即逗号分隔值
  32. 但只要你使用的符号仅作为数据集中行的字段分隔符
  33. 任何符号都可以被用作分隔符
  34. 所以 在软件开发中
  35. 对于在处理有多种变体
  36. 或者 用我朋友 Will Cross 的话说 有多个星号的 CSV文件
  37. 我们所需要处理的这些形式和细节问题
    38
  38. 已被抽象化并予以解决
  39. 这就是 Python 的 CSV 模块
  40. 这个模块几乎可以从各个方面处理 CSV 格式
  41. 让我们看看如何使用这个模块
  42. 我要做的是 使用这个模块中的 DictReader
  43. 这就是假定
  44. 我们的任务就是将数据读取为字典
  45. 我们的目的确实如此
  46. 这也是我们在后半节课要做的事情
  47. 但它也有其他的功能
  48. 例如 它假定在我们要读取的文件中
  49. 第一行就是标题行
  50. 而且 这些就是我们作为字段的名称
  51. 回到 CSV 文件 中 如果我把它拉到最上面
  52. 我们可以看到 第一行其实就是
  53. 我们针对该数据集的列或字段
  54. 所要使用所有字段标签
  55. 那么 这个字典读取器的作用就是
  56. 在读取行的同时 为每行创建一个字典
  57. 字段名称就是它在第一行中找到的名称
  58. 它会在读取数据文件的过程中
  59. 记住这些名称
  60. 而值就是文件各行的各个相关值
  61. 它也会处理引号
  62. 以及带有引号、内部可能有逗号的字段 等等
  63. 在使用 CSV 文件时
  64. 我们完全不用考虑这些问题
  65. 让我们看一下代码的剩余部分
  66. 实际上 我们就是在打开数据文件
  67. 我们将 CSV 模块中的 DictReader 实例化 然后直接遍历
  68. 每次遍历 这个等级都会生成一行数据
  69. 这一行数据就是一个
  70. 由该行中的适当字段构成的字典
  71. 所以 如果我们把页面拉下来
  72. 在这里 我直接把所有值打出来
  73. 我们看一下这个代码的运行情况
  74. 记住 我们使用的是 CSV 模块
  75. 如果我运行它 我们直接看一下第二行到最后一行
  76. 它的输出是
  77. 由这个文件第一行中的每个标签构成的字典
  78. 以及数据文件中这一行
  79. 所有字段的字段值
  80. 它会直接替我们处理
  81. 某些行中可能带引号的字段
  82. 以及 CSV 格式可能出现的其他问题
  83. 它会直接将各项数据放置在字典中
  84. 所以 当你在 Python 中处理 CSV 文件时
  85. 最好是使用 CSV 模块
  86. 因为它可以替我们解决
  87. 处理这类数据时可能遇到的很多难题