在列表中查找段落的第一个单词

时间:2012-06-06 00:49:13

标签: python list paragraph

我创建了一个列表,其中包含每个元素中的不同段落。

我想找到每个段落的第一个单词。

我唯一能想到的就是将每个段落分成单个单词并找到element[0]。这似乎相当过分,因为我已经在列表中已经有了每个段落

那么有什么更好的方法呢?

4 个答案:

答案 0 :(得分:3)

这样的东西?

l = ['start of paragraph 1','start of paragraph 2','para 3']
first_words = [p.split()[0] for p in l]
print first_words

打印:['start','start','para']

如果您不想拆分每个段落,可以搜索第一个空格的索引,并抓取每个单词:

l = ['start of paragraph 1','start of paragraph 2','para 3']
first_words = [p[:p.find(' ')] for p in l]
print first_words

打印:['start','start','para']

按要求说明:

  • 使用p.find('')查找段落中的第一个空格 - 返回位置
  • 然后通过p [:p.find('')]
  • 获取段落中的第一个字符
  • 该行的其余部分称为list comprehension,基本上遍历您的列表并依次获取每个段落p

答案 1 :(得分:1)

好悲伤:

my_paras = ["It was the best of times", "Twas a dark and stormy night", "The walrus and the carpenter"]

my_first_words = [para.split(None, 1)[0] for para in my_paras]

返回

['It', 'Twas', 'The']

要分割的None参数意味着“在任何连续的空格上拆分”并且通常是隐式的,但是我必须在此处指定它以便还提供第二个位置参数maxsplit。通过传递maxsplit = 1,.split()在找到第一个空格字符(返回由第一个单词和段落的其余部分组成的两项列表)之后停止,或者一旦它到达字符串的末尾(返回一个) -item list,整个run-on段落。

答案 2 :(得分:0)

假设每个段落都以单词开头(而不是说空格或数字):

[par[:par.index(" ")] for par in list_of_par]

这就是所谓的“列表理解”。它遍历list_of_par中的每个项目并将par[:par.index(" ")]应用于该项目。这会占用段落(par)的一部分,在这种情况下,从第0个字符到第一个空格(但不包括)第一个空格([:par.index(" ")])。

list comprehension返回一个字符串列表;每个字符串都是段落中的所有字符,直到第一个空格。

答案 3 :(得分:0)

你想如何布置你的话?你想保证它们不是空格,还是它们不包含标点符号?

首先剪切:

first_words = [
        paragraph.split(None, 1)[0]
        for paragraph in paragraphs
]