我正在尝试学习 python 并深入研究字符串函数。作为一个简单的例子,我写了这个
# example line
# username:*:231:-2:gecos field:/home/dir:/usr/bin/false
FILENAME = "/etc/passwd"
filehandle = open(FILENAME, 'r')
lines = filehandle.readlines()
for line in lines:
line = line.rstrip()
fields = line.split(':')
print fields[0]
这个例子每次都有效并给我一个用户名。列表中的第一个字段。
这也适用 [0:6] 并打印所有字段。 [:1] 还打印用户名。 [-1] 还打印最后一个字段。
问题是 [1]、[-2]、[2] 等会导致此错误
文件“splits.py”,第 16 行,位于
打印字段[-2]
IndexError:列表索引超出范围
我在这里做错了什么吗?我确信这很愚蠢,但我正在查看的示例表明我可以做到 [1]、[2] 等等。
我不认为我的输入混乱,因为 /etc/passwd 和 [0] 和 [-1] 有效。
非常感谢。
听起来你的文件中有一些空行,也许在最后。
Example:
>>>line = ''
>>>fields = line.split(":")
>>>print fields[0]
''
>>>print fields[-1]
''
>>>print fields[0:6]
''
>>>print fields[1]
IndexError: list index out of range
你可以这样修复它:
for line in lines:
line = line.rstrip()
fields = line.split(':')
if len(fields) == 1:
continue
print fields[0]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)