在给定索引后拆分并连接Python数组
我有一个叫做 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")