我实际上是在Udacity.com上使用Data Wrangling的课程代码。代码文件非常短,所以我能够复制他们所做的,但我仍然收到错误。他们使用python 2.7.x.该课程大约有一年的历史,因此2.7分支中的功能或模块可能已经发生了变化。我的意思是教师使用的代码。
我知道使用csv模块或函数可以解决问题,但是他们想要演示自定义解析函数的使用。另外,它们使用枚举函数。这是link to the gist。
这应该是非常简单和基本的,这就是为什么它令我感到沮丧。我知道他们正在读取文件,这是一个csv文件,作为二进制文件,使用" rb"行的参数
with open("file.csv", "rb") as f:
答案 0 :(得分:2)
您的csv文件和测试功能中的字典中没有匹配的字符。特别是,在您的csv文件中,您使用的是 em dash (U + 2014),而在firstline
和tenthline
词典中,您使用的是连字符 - 减号(U + 002D)。
hex(ord(d[0]['US Chart Position'].decode('utf-8')))
'0x2014' # output: code point for the em dash character in csv file
hex(ord(firstline['US Chart Position']))
'0x2d' # output: code point for hyphen-minus
要解决此问题,只需将您要点中的csv中的—
字符复制并粘贴到源代码中的字典中即可替换-
个字符。
确保在您的文件顶部包含此评论:
# -*- coding: utf-8 -*-
这将确保Python知道在源代码中期望非ascii字符。
或者,您可以使用连字符替换csv文件中的所有—
(em破折号)字符:
sed 's/—/-/g' beatles-diskography.csv > beatles-diskography2.csv
然后,请记住在源代码中使用新文件名。