为什么索引有效?

时间:2020-03-22 20:44:48

标签: python-3.x

我有md5sum.txt文件和一个python程序。然后,我想从该文件中解析一些字符串。我不明白为什么我的程序会引发异常,因为列表中应该有两个元素:

import hashlib

checksum_raw = open('F:/md5sum.txt', 'r').read()
cs_list_raw = checksum_raw.split("\n")
cs_list = []
for i in cs_list_raw:
    cs_list.append({
            'sum' : i.split('  ')[0],
            'path' : i.split('  ')[1]
            })
print (cs_list[0])
D:\newfolder\py_projects>py test.py
Traceback (most recent call last):
  File "test.py", line 9, in <module>
    'path' : i.split('  ')[1]
IndexError: list index out of range

但是这个效果很好:

import hashlib

checksum_raw = open('F:/md5sum.txt', 'r').read()
cs_list_raw = checksum_raw.split("\n")
cs_list = []
for i in cs_list_raw:
    cs_list.append({
            'sum' : i.split('  ')[0],
            'path' : i.split('  ')[-1]
            })
print (cs_list[0])
D:\newfolder\py_projects>py test.py
{'sum': 'cde56251d6cae5214227d887dee3bab7', 'path': './pics/red-upperleft.png'}

以下是txt文件中的一些字符串:

cde56251d6cae5214227d887dee3bab7  ./pics/red-upperleft.png
0730e775a72519aaa450a3774fca5f55  ./pics/red-lowerleft.png
cd8aa5e7fa11b1362ef1869ac6b1aa56  ./pics/blue-lowerleft.png
92091902d3ca753bb858d4682b3fc26b  ./pics/logo-50.jpg
461cbc7ff94fdea8008cab34b611abb8  ./pics/blue-upperright.png
9e18ae797773b2677b1b7b86e2aff28d  ./pics/blue-lowerright.png
...

1 个答案:

答案 0 :(得分:1)

Python索引的工作方式是将-1映射到列表中的最后一个元素。在您的情况下,列表中似乎只有一个元素,因此索引0和-1都映射到同一元素。您应该仔细检查所有行是否都遵循您指定的格式。