Python从列表中删除每个字符串中的单词

时间:2017-03-26 13:51:46

标签: python list split slice

所以我有一个列表,每个元素都有一个句子形式的字符串,就像这个

a = ["This is a sentence with some words.", "And this is a sentence as well.", "Also this right here is a sentence."]

我想对这个列表做的只是保留每个字符串的第三个和第四个字,所以最后我想要一个像

这样的列表
b = ["a sentence", "is a", "right here"]

我要做的第一件事是在空格后拆分列表,所以像

for x in a:
    x.split()

但是我对如何继续感到有点困惑。上面的循环应该每个句子基本上产生一个列表,其中每个单词都是自己的元素。我想过这样做

e = []
for x in a:
    x.split()
    a = x[0:2]
    a = x[2:]
    e.append(a)

但不是删除单词而是删除字符,而是获得以下输出

['is is a sentence with some words.', 'd this is a sentence as well.', 'so this right here is a sentence.']

我不确定为什么会产生这种行为。我一直坐在这里一段时间,可能错过了一些非常愚蠢的东西,所以我真的很感激一些帮助。

3 个答案:

答案 0 :(得分:4)

没有什么可以修改字符串,它们是不可变的。您只能从中获取数据。正如其他人所说,您需要存储.split()

的值

列表是可变的,但切片它们也不会在适当的位置修改它们,它会创建一个新的子列表,您需要将其存储在某处。总的来说,这可以这样做:

e = [' '.join(x.split()[2:4]) for x in a]

如果您不熟悉,整个事情就是列表理解。 .join()将子列表转换回字符串。

答案 1 :(得分:1)

字符串是不可变的。 x.split()返回字符串列表,但不修改x。但是,您不会捕获该返回值,因此会丢失。

答案 2 :(得分:1)

执行x.split()时,输出对x本身不起作用,会产生字符串列表,因为string不可变:

lst = s.split()

然后加入您想要的项目:

e.append(' '.join(lst[2:4]))