所以我试图从网站上获取数据并将其解析为一个对象。数据由竖线 ("|") 分隔。但是,当我使用 .split('|') 拆分字符串时,我得到
TypeError: 'str' does not support the buffer interface
我仍在尝试学习 Python。我已经对这个错误进行了一些挖掘,但我能找到的每个例子都与发送或接收数据有关,并且有很多我不熟悉的行话。一个解决方案说使用 .split(b'|'),但是这以某种方式将我的字符串转换为一个字节并阻止我在最后一行打印它。
下面是我的代码。您能提供的任何帮助将不胜感激!
with urllib.request.urlopen('ftp://ftp.nasdaqtrader.com/SymbolDirectory/nasdaqtraded.txt') as response:
html = response.read()
rawStockList = html.splitlines()
stockList = []
for i in rawStockList:
stockInfo = i.split('|')
try:
stockList.append(Stock(stockInfo[1], stockInfo[2], stockInfo[5], stockInfo[10], 0))
except IndexError:
pass
print([str(item) for item in stockList])
最佳答案
rawStockList
中的项目实际上是 byte
类型,因为 response.read()
返回它,因为它不需要知道编码。您需要通过使用编码对其进行解码来将其转换为正确的字符串。假设文件是用 utf8 编码的,你需要这样的东西:
for i in rawStockList:
stockInfo = i.decode('utf8').split('|')