[英]How do I fix an error in my python code where it is complaining about a string being wanted?
我实际上是在使用Udacity.com上有关数据整理的课程中的代码。 代码文件很短,因此我能够复制他们所做的事情,但仍然出现错误。 他们使用python2.7.x。 该课程大约有一年的历史,因此有关2.7分支中的功能或模块的某些内容可能已更改。 我的意思是讲师使用的代码有效。
我知道使用csv模块或函数可以解决此问题,但是他们想演示自定义解析函数的用法。 此外,他们正在使用枚举功能。 这是要点的链接 。
这应该非常简单和基本,这就是为什么让我感到沮丧的原因。 我知道他们正在读取文件,该文件是csv文件,为二进制文件,其行的参数为“ rb”
with open("file.csv", "rb") as f:
您的csv文件中没有匹配的字符,而您的测试函数中没有字典。 特别是,在CSV文件中使用的是一个破折号 (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文件中的所有—
(破折号)字符:
sed 's/—/-/g' beatles-diskography.csv > beatles-diskography2.csv
然后,请记住在源代码中使用新文件名。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.