(id,title)=line.split('|')[0:2] 的作用是什么?

Qua*_*ine 4 python python-2.7 python-3.x

所以我刚刚开始学习Python,我拿起一本用Python 2编写的书,但我使用Python3.6来编译。所以我对这些差异不是很熟悉。

当我写这个的时候

movies={}
for line in open (path+'/u.item'):
    (id,title)=line.split('|')[0:2]
    movies[id]=title
Run Code Online (Sandbox Code Playgroud)

我收到这个错误

   (id,title)=line.split('|')[0:2]     
TypeError: list indices must be integers or slices, not float 
Run Code Online (Sandbox Code Playgroud)

我不太确定 (id,title)=line.split("|")[0:2] 正在做什么。请帮助我理解。

DJK*_*DJK 5

看起来每个都line应该是一个带有一个或多个管道字符 ( |) 的字符串。

\n\n

例如line = "This|is|an|example"

\n\n

line.split(\'|\')在每次出现分隔符时将字符串分割成一个数组(Python 称之为“列表”)。分隔符是作为参数传递给 的字符串split(),在本例中是管道字符。

\n\n

因此,在我的示例中,line.split(\'|\')返回[\'This\', \'is\', \'an\', \'example\'].

\n\n

末尾的括号表示“现在我们已将字符串拆分为数组,请给我该数组中的每个项目,从索引 0 到 \xe2\x80\x94,但不包括!\xe2\x80\x94index 2 ”。(换句话说,给我数组中的前两项。)

\n\n

继续我的示例,line.split(\'|\')[0:2]返回[\'This\', is\'].

\n\n

=符号将返回值 (\'This\'\'is\')分别赋给idtitle

\n\n

结果是id == \'This\'title == \'is\'

\n

  • 是的,这是有道理的。感谢您的解释。^_^ (2认同)