3

我正在尝试学习 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: list index out of range

我在这里做错了吗?我确定这很愚蠢,但是我正在查看的示例说我可以做 [1]、[2] 等等。

我不认为我的输入搞砸了,因为它是 /etc/passwd 和 [0] 和 [-1] 工作。

非常感谢。

4

1 回答 1

1

听起来您的文件中有一些空行,可能在最后。

例子:

>>>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]
于 2012-05-20T15:17:56.153 回答