删除列表中的字符串

时间:2019-04-03 21:08:18

标签: python

我有一个嵌套列表(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,他是个高个子] ,,,,]

示例输出: 这是书,他是个高个子

4 个答案:

答案 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)

如果在句子中找不到搜索到的单词,则此解决方案不会遍历句子,也不会进行连接。 这取决于我猜所有句子中搜索到的单词的频率。