在给定索引后拆分并连接Python数组

-1 投票
2 回答
609 浏览
提问于 2025-04-18 05:27

我有一个叫做 line 的字符串,用 Python 处理过并进行了分割。这个 line 是一个重复出现的字符串。我正在查找一个 Excel 文件,打印出每一行包含特定单词的内容,这个单词我称之为 search,它是用户输入的。如果 line 中不包含 search,那么就不会被打印出来。

我把 line 分割开来,并打印出了 search_index(也就是 line 中搜索词的位置)。

s=line.split()
search_index = s.index(search) if inflected in s else "not in this line"
print(search_index)

如果这个词不在 line 中,那么日志会显示“not in this line”,而不是一个数字,因为如果不这样做程序会崩溃。

我想做的是把这个分割的部分重新拼接起来,但要让搜索的词在中间。所以,像这样:

new_line=[search_index - 5:search_index + 5]

但我不确定这样做是否正确,因为在网页上出现了“语法无效”的错误。

那我该怎么正确地做呢?

2 个回答

1

当你想要获取一个列表的属性时,总是需要在调用它之前加上列表的名字:

>>> line = 'hello world!'
>>> search_index = 3
>>> [search_index-3:search_index+3]
  File "<stdin>", line 1
    [search_index-3:search_index+3]
                   ^
SyntaxError: invalid syntax
>>> line[search_index-3:search_index+3]
'hello '
>>> 

所以,应该用 new_line = line[search_index-5:search_index+5],而不是 new_line = [search_index-5:search_index+5]

这里还有一个例子:

>>> line = 'Hello this is django on python'
>>> line = line.split()
>>> search_index = line.index('django')
>>> new_line = [search_index - 2:search_index + 2]
  File "<stdin>", line 1
    new_line = [search_index - 2:search_index + 2]
                                         ^
SyntaxError: invalid syntax
>>> new_line = line[search_index - 2:search_index + 2]
>>> new_line
['this', 'is', 'django', 'on']
>>> 
1

我觉得你可能写错了(在你的范围 [:] 前面缺少 line),不过还有另外一个问题。如果你的 search_index 被赋值为一个字符串,那你就不能对它加或减 5。

我不太清楚具体情况,所以你需要根据自己的需求调整一下,但这段话解决了这些问题:

s=line.split()
if inflected in s:
    search_index = s.index(search)
    new_line = line[search_index-5:search_index+5]
else:
    print("not in this line")

撰写回答