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()。