如何修复我的python代码中的错误,在该代码中它抱怨想要一个字符串?

时间:2016-08-13 22:33:20

标签: python python-2.7 csv

我实际上是在Udacity.com上使用Data Wrangling的课程代码。代码文件非常短,所以我能够复制他们所做的,但我仍然收到错误。他们使用python 2.7.x.该课程大约有一年的历史,因此2.7分支中的功能或模块可能已经发生了变化。我的意思是教师使用的代码。

我知道使用csv模块或函数可以解决问题,但是他们想要演示自定义解析函数的使用。另外,它们使用枚举函数。这是link to the gist

这应该是非常简单和基本的,这就是为什么它令我感到沮丧。我知道他们正在读取文件,这是一个csv文件,作为二进制文件,使用" rb"行的参数

with open("file.csv", "rb") as f:

1 个答案:

答案 0 :(得分:2)

您的csv文件和测试功能中的字典中没有匹配的字符。特别是,在您的csv文件中,您使用的是 em dash (U + 2014),而在firstlinetenthline词典中,您使用的是连字符 - 减号(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

然后,请记住在源代码中使用新文件名。