所以我有一个列表,每个元素都有一个句子形式的字符串,就像这个
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.']
我不确定为什么会产生这种行为。我一直坐在这里一段时间,可能错过了一些非常愚蠢的东西,所以我真的很感激一些帮助。
答案 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]))