访问列表元素时的IndexError

时间:2018-02-08 17:03:21

标签: python string for-loop if-statement

我正在尝试从列表中提取值(保存在文件'Verhaltens_Baum_Read'中)。见下面的前4行:

['Possibilities', 'Condition', 'Gen', 'Insight', 'False', 'Solved', 'OldNew', 'RemKnow']  
['1', 'Exp', 'Erkannt', 'AHA', 'Real', 'Yes 1', 'New', 'Ka']  
['2', 'Base', 'Erkannt', 'AHA', 'Real', 'Yes 1', 'New', 'Ka']  
['3', 'Exp', 'Erkannt', 'AHA', 'Real', 'Yes 1', 'Old', 'Remember']

为此,我写了这段代码:

Condition_Names = open('Condition_Names.txt','w')

file = open('Verhaltens_Baum_Read.txt','r')

for splitted in file:
    if splitted[1] == 'Exp':
        Condition_Names.write('Exp_')
    if splitted[1] == 'Base':
        Condition_Names.write('Base_')
    if splitted[2] == 'Erkannt':
        Condition_Names.write('Gen_')
    if splitted[2] == 'Nicht Erkannt':
        Condition_Names.write('NotGen_')    
    if splitted[3] == 'AHA':
        Condition_Names.write('Aha_')
    if splitted[3] == 'Kein AHA':
        Condition_Names.write('NoAha_')
    if splitted[4] == ('Real'):
        Condition_Names.write('Real_')
    if splitted[4] == ('False'):
        Condition_Names.write('False_')
    if splitted[5] == ('Yes 1'):          #This is the line 27
        Condition_Names.write('Solved_')
    if splitted[5] == ('No 0'):
        Condition_Names.write('NotSolved_')
    if splitted[6] == 'Old':
        Condition_Names.write('Old_')
    if splitted[6] == 'New':
        Condition_Names.write('New_')
    if splitted[7] == 'Ka':
        Condition_Names.write('Ka\n')
    if splitted[7] == 'Remember':
        Condition_Names.write('Rem\n')
    if splitted[7] == 'Recognized':
        Condition_Names.write('Recog\n')

然后我希望我的代码根据列表中的出现次数在另一个文本文件中写入名称。我的代码的输出是:

Traceback (most recent call last):
  File "./Condition_Names_Generate.py", line 27, in <module>
    if splitted[5] == ('Yes 1'):
IndexError: string index out of range

我真的不明白为什么会这样。 splitted [5]项目在列表中保存为字符串,您可以在上面看到它。我将不胜感激任何帮助。

Verhaltens_Baum.txt的确切内容如下:

['Possibilities', 'Condition', 'Gen', 'Insight', 'False', 'Solved', 'OldNew', 'RemKnow']
['1', 'Exp', 'Erkannt', 'AHA', 'Real', 'Yes 1', 'New', 'Ka']
['2', 'Base', 'Erkannt', 'AHA', 'Real', 'Yes 1', 'New', 'Ka']
['3', 'Exp', 'Erkannt', 'AHA', 'Real', 'Yes 1', 'Old', 'Remember']
['4', 'Base', 'Erkannt', 'AHA', 'Real', 'Yes 1', 'Old', 'Remember']
['5', 'Exp', 'Erkannt', 'AHA', 'Real', 'Yes 1', 'Old', 'Recognized']
['6', 'Base', 'Erkannt', 'AHA', 'Real', 'Yes 1', 'Old', 'Recognized']
['7', 'Exp', 'Erkannt', 'AHA', 'Real', 'No 0', 'New', 'Ka']
['8', 'Base', 'Erkannt', 'AHA', 'Real', 'No 0', 'New', 'Ka']
['9', 'Exp', 'Erkannt', 'AHA', 'Real', 'No 0', 'Old', 'Remember']
['10', 'Base', 'Erkannt', 'AHA', 'Real', 'No 0', 'Old', 'Remember']
['11', 'Exp', 'Erkannt', 'AHA', 'Real', 'No 0', 'Old', 'Recognized']
['12', 'Base', 'Erkannt', 'AHA', 'Real', 'No 0', 'Old', 'Recognized']
['13', 'Exp', 'Erkannt', 'Kein AHA', 'Real', 'Yes 1', 'New', 'Ka']
['14', 'Base', 'Erkannt', 'Kein AHA', 'Real', 'Yes 1', 'New', 'Ka']
['15', 'Exp', 'Erkannt', 'Kein AHA', 'Real', 'Yes 1', 'Old', 'Remember']
['16', 'Base', 'Erkannt', 'Kein AHA', 'Real', 'Yes 1', 'Old', 'Remember']
['17', 'Exp', 'Erkannt', 'Kein AHA', 'Real', 'Yes 1', 'Old', 'Recognized']
['18', 'Base', 'Erkannt', 'Kein AHA', 'Real', 'Yes 1', 'Old', 'Recognized']
['19', 'Exp', 'Erkannt', 'Kein AHA', 'Real', 'No 0', 'New', 'Ka']
['20', 'Base', 'Erkannt', 'Kein AHA', 'Real', 'No 0', 'New', 'Ka']
['21', 'Exp', 'Erkannt', 'Kein AHA', 'Real', 'No 0', 'Old', 'Remember']
['22', 'Base', 'Erkannt', 'Kein AHA', 'Real', 'No 0', 'Old', 'Remember']
['23', 'Exp', 'Erkannt', 'Kein AHA', 'Real', 'No 0', 'Old', 'Recognized']
['24', 'Base', 'Erkannt', 'Kein AHA', 'Real', 'No 0', 'Old', 'Recognized']
['25', 'Exp', 'Nicht Erkannt', 'AHA', 'Real', 'Yes 1', 'New', 'Ka']
['26', 'Base', 'Nicht Erkannt', 'AHA', 'Real', 'Yes 1', 'New', 'Ka']
['27', 'Exp', 'Nicht Erkannt', 'AHA', 'Real', 'Yes 1', 'Old', 'Remember']
['28', 'Base', 'Nicht Erkannt', 'AHA', 'Real', 'Yes 1', 'Old', 'Remember']
['29', 'Exp', 'Nicht Erkannt', 'AHA', 'Real', 'Yes 1', 'Old', 'Recognized']
['30', 'Base', 'Nicht Erkannt', 'AHA', 'Real', 'Yes 1', 'Old', 'Recognized']
['31', 'Exp', 'Nicht Erkannt', 'AHA', 'Real', 'No 0', 'New', 'Ka']
['32', 'Base', 'Nicht Erkannt', 'AHA', 'Real', 'No 0', 'New', 'Ka']
['33', 'Exp', 'Nicht Erkannt', 'AHA', 'Real', 'No 0', 'Old', 'Remember']
['34', 'Base', 'Nicht Erkannt', 'AHA', 'Real', 'No 0', 'Old', 'Remember']
['35', 'Exp', 'Nicht Erkannt', 'AHA', 'Real', 'No 0', 'Old', 'Recognized']
['36', 'Base', 'Nicht Erkannt', 'AHA', 'Real', 'No 0', 'Old', 'Recognized']
['37', 'Exp', 'Nicht Erkannt', 'Kein AHA', 'Real', 'Yes 1', 'New', 'Ka']
['38', 'Base', 'Nicht Erkannt', 'Kein AHA', 'Real', 'Yes 1', 'New', 'Ka']
['39', 'Exp', 'Nicht Erkannt', 'Kein AHA', 'Real', 'Yes 1', 'Old', 'Remember']
['40', 'Base', 'Nicht Erkannt', 'Kein AHA', 'Real', 'Yes 1', 'Old', 'Remember']
['41', 'Exp', 'Nicht Erkannt', 'Kein AHA', 'Real', 'Yes 1', 'Old', 'Recognized']
['42', 'Base', 'Nicht Erkannt', 'Kein AHA', 'Real', 'Yes 1', 'Old', 'Recognized']
['43', 'Exp', 'Nicht Erkannt', 'Kein AHA', 'Real', 'No 0', 'New', 'Ka']
['44', 'Base', 'Nicht Erkannt', 'Kein AHA', 'Real', 'No 0', 'New', 'Ka']
['45', 'Exp', 'Nicht Erkannt', 'Kein AHA', 'Real', 'No 0', 'Old', 'Remember']
['46', 'Base', 'Nicht Erkannt', 'Kein AHA', 'Real', 'No 0', 'Old', 'Remember']
['47', 'Exp', 'Nicht Erkannt', 'Kein AHA', 'Real', 'No 0', 'Old', 'Recognized']
['48', 'Base', 'Nicht Erkannt', 'Kein AHA', 'Real', 'No 0', 'Old', 'Recognized']
['49', '', '', '', 'False', 'Yes 1', 'New', 'Ka']
['50', '', '', '', 'False', 'Yes 1', 'Old', 'Remember']
['51', '', '', '', 'False', 'Yes 1', 'Old', 'Recognized']
['52', '', '', '', 'False', 'No 0', 'New', 'Ka']
['53', '', '', '', 'False', 'No 0', 'Old', 'Remember']
['54', '', '', '', 'False', 'No 0', 'Old', 'Recognized']
['']

1 个答案:

答案 0 :(得分:0)

我不明白你想要在新文件中写什么,但要验证你的清单,你可以做到这一点

Condition_Names = open('Condition_Names.txt','w')
with open('Verhaltens_Baum_Read.txt', 'r') as file: # this make file a obj with information of your .txt, after that you can work with him, and after end the identification block the file close and save
    for splitted in file:
        #here you can verify word by word, using splitted[0] etc.

Condition_Names.close()

我建议你改变变量的名称,从小写开始,比如conditionNames。