Python 获取列表中某个字符串后面/前面的所有元素/字符串

Python 获取列表中某个字符串后面/前面的所有元素/字符串,python,list,Python,List,我有一个关键字列表和字符串/文本示例: text='a b c d e f g h i j k l m n o' k = ['e','i','k'] 我正在尝试获取k列表中某个关键字前后出现的所有字符串 v1_list=[] for v1 in text: if v1 in k: v1_list.append(text[text.index(v1):-1]) 它只为'e'提供['d'] 我的代

我有一个关键字列表和字符串/文本示例:

text='a b c d e f g h i j k l m n o'

k = ['e','i','k']
我正在尝试获取k列表中某个关键字前后出现的所有字符串

                        
    v1_list=[]
    for v1 in text:
        if v1 in k:
        v1_list.append(text[text.index(v1):-1])
它只为
'e'
提供
['d']

我的代码只给出前面或下一个字符串
(v2:+1)
而不是左边的所有元素。如何获取特定字符串左/右侧的所有元素。 我需要,
['a','b','c','d']
用于
'e'
(列表中
'e'
之前的所有元素)我仍在学习中,请告诉我哪里做错了。

你可以试试这个

text='a b c d e f g h i j k l m n o'

k = ['e','i','k']

v1_list_right= list()
v1_list_left = list()
for v1 in text:
        if v1 in k:
         v1_list_right.append(text[text.index(v1)+1:])
         v1_list_left.append(text[:text.index(v1)])

print(v1_list_right)
print(v1_list_left)
text='a b c d e f g h i j k l m n o i'

k = ['e','i','k']
idx = 0
v1_list_right= list()
v1_list_left = list()
index = 0
for character in k:
    while index < len(text):
        index = text.find(character, index)
        if index == -1:
            break
        v1_list_left.append(text[:index])
        index = index + 1
    index = 0


print(v1_list_left)
text = 'a b c d e f g h i j k l m n o i'
a = text.split()
k = ['e','i','k']
v1_list_right= list()
v1_list_left = list()
index = 0
for character in k:
    while index < len(a):
        if character == a[index]:
            print(a[:index])
        index = index + 1
    index = 0
基本上,这会给你从0到索引号的字符

text[:text.index(v1)]
这就给出了,从下一个索引号开始到数组的末尾

text[text.index(v1)+1:]
如果不使用+1,我们在这里使用+1来传递您的角色。它也会将您的角色添加到数组中,但我们只是在寻找左或右

但是,此代码不适用于重复字符。如果有重复字符,您可以尝试以下操作:

text='a b c d e f g h i j k l m n o'

k = ['e','i','k']

v1_list_right= list()
v1_list_left = list()
for v1 in text:
        if v1 in k:
         v1_list_right.append(text[text.index(v1)+1:])
         v1_list_left.append(text[:text.index(v1)])

print(v1_list_right)
print(v1_list_left)
text='a b c d e f g h i j k l m n o i'

k = ['e','i','k']
idx = 0
v1_list_right= list()
v1_list_left = list()
index = 0
for character in k:
    while index < len(text):
        index = text.find(character, index)
        if index == -1:
            break
        v1_list_left.append(text[:index])
        index = index + 1
    index = 0


print(v1_list_left)
text = 'a b c d e f g h i j k l m n o i'
a = text.split()
k = ['e','i','k']
v1_list_right= list()
v1_list_left = list()
index = 0
for character in k:
    while index < len(a):
        if character == a[index]:
            print(a[:index])
        index = index + 1
    index = 0
text='a b c d e f g h i j k l m n i'
k=['e','i','k']
idx=0
v1_list_right=list()
v1_list_left=list()
索引=0
对于k中的字符:
当索引
如果你有一个列表而不是字符串,你可以试试这个

text='a b c d e f g h i j k l m n o'

k = ['e','i','k']

v1_list_right= list()
v1_list_left = list()
for v1 in text:
        if v1 in k:
         v1_list_right.append(text[text.index(v1)+1:])
         v1_list_left.append(text[:text.index(v1)])

print(v1_list_right)
print(v1_list_left)
text='a b c d e f g h i j k l m n o i'

k = ['e','i','k']
idx = 0
v1_list_right= list()
v1_list_left = list()
index = 0
for character in k:
    while index < len(text):
        index = text.find(character, index)
        if index == -1:
            break
        v1_list_left.append(text[:index])
        index = index + 1
    index = 0


print(v1_list_left)
text = 'a b c d e f g h i j k l m n o i'
a = text.split()
k = ['e','i','k']
v1_list_right= list()
v1_list_left = list()
index = 0
for character in k:
    while index < len(a):
        if character == a[index]:
            print(a[:index])
        index = index + 1
    index = 0
text='a b c d e f g h i j k l m n o i'
a=text.split()
k=['e','i','k']
v1_list_right=list()
v1_list_left=list()
索引=0
对于k中的字符:
当指数
您是否可以添加示例输入和输出,以使用
text[:text.index(v1)]获取所有前字符串
并使用
text[text.index(v1)+1://获取所有后字符串。还有一个更好的例子和格式将有助于理解更多的上下文。@Sajjan。非常感谢你!成功了!。我得到了第一个#text[:text.index(v1)],start:0:stop-till-index[v1]。但是我可以问一下最后一个问题吗#text[text.index(v1)+1:]这个+1在这里做什么?@sajjankumar问题是index只返回元素的第一个匹配项。如果某个元素在文本中多次出现。这个索引对此不起作用。有没有其他方法可以获取元素的所有引用?其他内置函数而非索引?@kuldeepsingsidhu我正在尝试编辑,但无法编辑。还是新系统。非常感谢您提供的详细信息。但问题是索引只返回元素的第一次出现。如果某个元素多次出现。这个索引不起作用。有没有其他方法可以获取元素的所有引用?其他内置函数而不是索引。我已编辑了我的解决方案。您应该检查find()函数在python中的工作方式。我们正在逐个索引查找字符,并利用find()函数获取索引号。它显示了我的函数中的错误-list'对象没有属性'find',我也尝试了enumerate,但为索引+1提供了空列表或索引超出范围错误。请问idx=0的用途是什么?您的文本是列表还是字符串?它是list..text.split()。