我有一个名为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)
如果该行中不存在,那么日志会说"不在这一行"而不是一个数字,因为它崩溃了,我没有包含它。
我想要做的就是将这个分裂重新加入,但是从搜索范围为中间的范围内。所以,像
new_line=[search_index - 5:search_index + 5]
但不确定这是否正确,因为它在网页上给我一个错误"语法无效"
如何正确完成?
答案 0 :(得分: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 = [search_index-5:search_index+5]
。
new_line = 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 :(得分: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")