我正在尝试从字符串列表中删除一些单词。
list1= "abc dfc kmc jhh jkl"
。
我的目标是删除'dfc'
到'jhh'
的字词。我是Python的新手,所以我用c#中的索引尝试了一些东西,但它们在这里不起作用。
我正在尝试这个:
index=0
for x in list1:
if x=='dfc'
currentindex=index
for y in list1[currentindex:]
if y!='jhh'
break;
del list1[currentindex]
currentindex=index
elif x=='jhh'
break;
答案 0 :(得分:1)
而不是一个长的for循环,Python中的一个简单切片可以解决这个问题:
words = ['abc', 'dfc', 'kmc', 'jhh', 'jkl']
del words[1:4]
print(words)
索引从0开始。因此您要删除索引1-3。我们在切片中输入4,因为Python在最后一个索引参数之前停止-1(所以在索引3处)。比循环容易得多。
这是你的输出:
['abc', 'jkl']
答案 1 :(得分:1)
>>> a = "abc dfc kmc jhh jkl"
>>> print(a.split("dfc")[0] + a.split("jhh")[1])
abc jkl
您可以使用lambda进行此样本处理:
b = lambda a,b,c : a.split(b)[0] + a.split(c)[1]
print(b(a, "dfc", "jhh"))
答案 2 :(得分:0)
首先,将字符串拆分为单词:
list1 = "abc dfc kmc jhh jkl"
words = list1.split(" ")
接下来,迭代这些单词直到找到匹配项:
start_match = "dfc"
start_index = 0
end_match = "jhh"
end_index = 0
for i in range(len(words)):
if words[i] == start_match:
start_index = i
if words[i] == end_match:
end_index = j
break
print ' '.join(words[:start_index]+words[end_index+1:])
注意:在多个匹配的情况下,这将删除最少量的单词(选择最后一个start_match和第一个end_match)。
答案 3 :(得分:0)
list1= "abc dfc kmc jhh jkl".split()
使list1如下:
['abc', 'dfc', 'kmc', 'jhh', 'jkl']
现在,如果要删除列表元素,可以尝试
list1.remove(item) #removes first occurrence of 'item' in list1
或者
list1.pop(index) #removes item at 'index' in list1
答案 4 :(得分:0)
通过拆分字符串
来创建单词列表list1= "abc dfc kmc jhh jkl".split()
然后使用标志变量迭代列表,以指示是否应从列表中删除元素
flag = False
for x in list1:
if x=='dfc':
flag = True
if x == 'jhh':
list1.remove(x)
flag = False
if flag == True:
list1.remove(x)
答案 5 :(得分:0)
您尝试过的内容存在一些问题,尤其是:
list1
是一个字符串,而不是一个列表list1[i]
时,你会得到索引i
的字符(不是一个字)这是我使用re.sub()
的单行样式建议,它只是替换与给定正则表达式模式匹配的字符串的一部分。它可能足以满足您的目的:
import re
list1= "abc dfc kmc jhh jkl"
list1 = re.sub(r'dfc .* jhh ', "", list1)
print(list1)
注意:我保留了标识符list1
,即使它是一个字符串。
答案 6 :(得分:-1)
你可以这样做
ovs-ofctl