试图在Python 3中拆分字符串,得到’str’不支持缓冲区接口

所以我试图从网站获取数据并将其解析为一个对象.数据由竖线(“|”)分隔.但是,当我使用.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('|')
点赞