我有一个嵌套列表(l1),其中包含几个句子(i)列表,当将split()方法应用到它时,我想从(i)的第二个元素中删除特定的字符串。但是,似乎只有一半被删除,其余的保留了下来。
这是我尝试过的:
for i in l1:
for j in i[1].split():
if j == 'a':
i[1].split().remove(j)
我也尝试用空字符串替换(j),但这也没有帮助。
示例输入:[[string1,这是一本书],[string2,他是个高个子] ,,,,]
示例输出: 这是书,他是个高个子
答案 0 :(得分:2)
您无法更改字符串,因此您的示例将无法正常工作。
但是您可以对列表进行突变,因此可以在空白处拆分字符串,忽略'a'
标记,然后将其重新结合在一起:
for i in l1:
i[1] = ' '.join(p for p in i[1].split() if p != 'a')
这会占用原始字符串中的所有多余空格,但我认为这里对您而言并不重要。
答案 1 :(得分:1)
以下代码:
l1 = [
[None, "This is a dog"],
[None, "He is a tall man"],
]
for i in l1:
sentence = i[1]
new_sentence = []
for word in sentence.split():
if word == 'a':
continue
new_sentence.append(word)
i[1] = " ".join(new_sentence)
print(l1)
将导致
[
[None, 'This is dog'],
[None, 'He is tall man']
]
答案 2 :(得分:0)
如果我对您的理解正确,那么应该可以完成您要尝试的工作。
for i in l1:
if 'a' in i[1]:
i[1] = i[1].replace(' a ', ' ')
答案 3 :(得分:0)
我认为一种更有效的解决方案:
word_search = 'a'
for i in l1:
split_sentence = i[1].split()
if word_search in split_sentence:
while word_search in split_sentence:
split_sentence.remove(word_search)
i[1] = ' '.join(split_sentence)
如果在句子中找不到搜索到的单词,则此解决方案不会遍历句子,也不会进行连接。 这取决于我猜所有句子中搜索到的单词的频率。