首先:这似乎已经得到了回答,描述并回答了类似的问题,但是(我认为)这有本质上的区别,值得在此询问(对不起,如果我错了)。这就是为什么我在下面写一个相当详细的解释,抱歉,请耐心等待,我宁愿过于详细。
我正在尝试处理大量的.txt文件,并逐一查找,找到目标单词的每个实例,然后将单词及其两侧的10个单词打印到.csv文件中,分析(了解使用该词的上下文)。
我希望每个单词都进入各自单元格中的每个区域以供以后分析。这样,在.csv处理部分中,我记录了该关键字的单个索引的降序列表,然后从该索引升序远离该索引,在每个方向上递增10。除非我定位的单词距文档开头或结尾不超过10个印度字母,否则它的工作原理就像魅力。
如果是,它将出现“ IndexError:列表索引超出范围”
我在这里看到了一些有用的说明,用于管理如何建立索引列表/与超限索引(Python Loop: List Index Out of Range接口),但是我的问题是我需要(嗯,我想/希望我(能够)使程序继续请求索引并在文件的开头或结尾返回“”,而不是碰壁。
*为简便起见,下面是代码的一部分,用于建立索引,然后进行索引查询,它们实际上并没有像这样在代码中堆叠。这里的括号可能有一个空格,不要以为是适当的,但是我想我应该是大概的情况,以防我像往常一样出错。 *
for index in range(len(up_file_split_raw)):
if keyword.match(up_file_split_raw[index]):
start = max(0, index-assoc_wrd_range)
finish = min(len(up_file_split_raw), index+assoc_wrd_range+1)
assocd_wrd_list = string.join (up_file_split_raw[start:finish])
Break in Code
row_vals_2 = {
'Assoc_1':(up_file_split_raw[start:index][0]),
'Assoc_2':(up_file_split_raw[start:index][1]),
'Assoc_3':(up_file_split_raw[start:index][2]),
'Assoc_4':(up_file_split_raw[start:index][3]),
'Assoc_5':(up_file_split_raw[start:index][4]),
'Assoc_6':(up_file_split_raw[start:index][5]),
'Assoc_7':(up_file_split_raw[start:index][6]),
'Assoc_8':(up_file_split_raw[start:index][7]),
'Assoc_9':(up_file_split_raw[start:index][8]),
'Assoc_10':(up_file_split_raw[start:index][9]),
'KeyWord':(up_file_split_raw[index]),
'Assoc_11':(up_file_split_raw[index+1:finish][0]),
'Assoc_12':(up_file_split_raw[index+1:finish][1]),
'Assoc_13':(up_file_split_raw[index+1:finish][2]),
'Assoc_14':(up_file_split_raw[index+1:finish][3]),
'Assoc_15':(up_file_split_raw[index+1:finish][4]),
'Assoc_16':(up_file_split_raw[index+1:finish][5]),
'Assoc_17':(up_file_split_raw[index+1:finish][6]),
'Assoc_18':(up_file_split_raw[index+1:finish][7]),
'Assoc_19':(up_file_split_raw[index+1:finish][8]),
'Assoc_20':(up_file_split_raw[index+1:finish][9]),
}
答案 0 :(得分:1)
使用切片将它们裁剪到列表索引范围。如果x
是单词列表,则x[max(0, i-10):i]
是i
之前的十个单词,而x[i+1:i+1+10]
是i
之后的十个单词。