python - 处理不确定长度的文本时如何管理列表索引?

标签 python

首先:这可能看起来已经得到了回答,有类似的问题被描述和回答,但(我认为)这有本质上的不同,足以值得在这里提问(抱歉,如果我错了)。这就是为什么我在下面写了一个相当详细的解释,抱歉啰嗦了,我宁愿太详细。

我正在尝试处理大量 .txt 文件,并在每个文件中查找目标单词的每个实例,然后将该单词及其两侧的 10 个单词打印到 .csv 文件中分析(了解单词所使用的上下文)。

我希望每个单词都位于自己的单元格中,以便以后进行分析。因此,在 .csv 处理部分中,我让它记录了关键字的单个索引的降序列表,然后记录了从它开始升序的单个索引,每个方向 10 个。除非我的目标单词距离文档开头或结尾 10 个索引范围内,否则它的工作方式类似于 charm。

如果是,则会抛出“IndexError:列表索引超出范围”

我在这里看到了关于管理如何构建索引列表/与溢出索引( Python Loop: List Index Out of Range )接口(interface)的有用解释,但我的问题是我需要(好吧,我想/希望我能够)让程序请求索引并返回“”(如果它是文件的开头或结尾)而不是碰壁。

* 为了简洁起见,这里是设置索引然后进行索引查询的代码块,它们在代码中实际上并不是这样堆叠的。这里的括号可能有一个空格,我认为这不相关,但我想我会近似,以防我像往常一样错了。 *

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]),
                                 }

最佳答案

使用它们剪辑到列表索引边界的切片。如果x是单词列表x[max(0, i-10):i]i之前的十个单词和x[i+1:i+1+10]i 之后的十个单词。

关于python - 处理不确定长度的文本时如何管理列表索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54299418/

相关文章:

python - 比较两个数据帧之间的每个元素

python - 如何在 python 中编写带有可选输出参数的函数

python - PyAudio ErrNo 输入溢出 -9981

python - 在 python 中运行的 Sqlite Case 语句

python - 按定义的日期对数据框进行分组

python - 使用 oauthlib python 获取 json 时出错

python - 如何使用 SCP 或 SSH 在 Python (paramiko) 中递归地将完整目录复制到远程服务器?

python - jupyter lab 中的 plot.ly 离线模式不显示绘图

python - 根据列表向字符串添加空格

python - 如何计算聚类的量化误差?