下面是一个文本文件内容,没有文本数据的标题或引号。如何在我的文件中解析dictionary.Each记录中的这些内容下面是我的文本文件内容:
B00308CJ12 Bulletproof Salesman (2008)
189138922X Classical Mechanics
B0000CEP9J Fiesta Black 464 7-1/4-inch Salad Plate
B000HRH6IA Baby Blue Aurora Blue Gem Butterfly Belly Ring
B000002ERY Predicciones Leo
使用下面的代码会给我一个错误。我假设这是因为我的句子没有用引号引起来。我该如何纠正这些值并将其放入字典中
f = open('file_path', 'r')
answer = {}
for line in f:
k, v = line.strip().split(' ')
answer[k.strip()] = v.strip()
f.close()
错误:
k,v= line.strip().split(‘')
ValueError:要解压缩的值太多(应为2)
更改代码后编辑
f = open('file_path', encoding="utf8")
answer = {}
for line in f:
k, v = line.strip().split(' ')[0],line.strip().split(' ')[1:]
answer[k] = v
f.close()
错误:
文件"C:\ProgramData\Anaconda3\lib\codecs.py",第321行,in decode (结果,消耗)=self._buffer_decode(数据,self.errors,最终)
UnicodeDecodeError:'utf-8‘编解码器无法解码位置1266处的字节0xae :无效的起始字节
发布于 2018-08-02 08:12:25
如果你想要{'B00308CJ12':'Bulletproof Salesman (2008)',...}
试试这个:
di={}
with open(fn) as f_in:
for line in f_in:
k,v=line.split(sep=None,maxsplit=1)
di[k]=v.rstrip()
>>> di
{'B00308CJ12': 'Bulletproof Salesman (2008)',
'189138922X': 'Classical Mechanics',
'B0000CEP9J': 'Fiesta Black 464 7-1/4-inch Salad Plate',
'B000HRH6IA': 'Baby Blue Aurora Blue Gem Butterfly Belly Ring',
'B000002ERY': 'Predicciones Leo'}
发布于 2018-08-02 06:40:26
替换
k, v = line.strip().split(' ')
使用
k, v = line.strip().split(' ')[0],line.strip().split(' ')[1:]
你的句子中有空格,所以你得到的值比你预期的要多
发布于 2018-08-02 07:03:07
行line.strip().split(' ')
实际上将文本文件的每一行拆分为一个列表,以空格字符' '
作为分隔符,为第一行['B00308CJ12', 'Bulletproof', 'Salesman', '(2008)']
生成如下所示的输出。此时,如果要创建字典,则需要确定字典中的键和值,并使用相应的索引从列表中获取这些值
关于编码的更新
尝试使用此行读取文件
f = open('file_path', encoding="utf8")
要将'Bulletproof Salesman (2008)'
作为值,可以使用连接函数
k, v = line.strip().split(' ')[0], " ".join(line.strip().split(' ')[1:])
https://stackoverflow.com/questions/51643162
复制相似问题