2

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

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

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

那么有什么更好的方法来做到这一点呢?

4

4 回答 4

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(' ')] 获取段落中的第一个字符
  • 该行的其余部分称为列表理解,基本上循环遍历您的列表并p依次获取每个段落
于 2012-06-06T00:52:44.480 回答
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']

Nonesplit的参数表示“在任何连续的空白处分割”,通常是隐含的,但是我必须在此处指定它,以便同时提供第二个位置参数maxsplit. 通过传递 maxsplit=1,.split() 在找到第一个空白字符(返回由第一个单词和段落的其余部分组成的两项列表)或到达字符串末尾(返回一个-项目列表,整个连续段落)。

于 2012-06-06T01:21:09.193 回答
0

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

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

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

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

于 2012-06-06T01:03:10.323 回答
0

你希望你的话如何布局?你不想保证它们不是空格,或者它们不包含标点符号吗?

第一剪:

first_words = [
        paragraph.split(None, 1)[0]
        for paragraph in paragraphs
]
于 2012-06-06T01:15:16.670 回答