思路:

正则表达式+ 切片操作

一、找出关键词的位置

二、利用字符串的切片功能

目前想到有三种情况:

1、当关键词位于开头时,从下标为0的开始切片

2、当关键词位于结尾时,切片取到最后一个字符

3、当关键词位于中间时,取前后指定位数字符

import re

string = 'The append method appends a DataFrame-like object at the end of the current DataFrame.append '
pattern = 'app'
num= 6 # 截取 关键词 前后 6 个字符
for m in re.finditer(pattern, string):
    print(m.start(), m.end())
    start=m.start()
    end=m.end()
    if m.start()-num<0:  # 情况一 关键词位于开头
        start=0
        print(string[start:end+num])
    elif m.end()+num >len(string): # 情况二 关键词位于结尾
        end=len(string)-1
        print(string[start-num:end])
    else:                    # 情况三 关键词位于中间
        print(string[start-num:end+num])

输出

4 7
The append me
18 21
ethod appends a
86 89
Frame.append