2012-06-06 79 views
2

我已经创建了一个列表,其中包含每个元素中的不同段落。在列表中找到一个段落的第一个词

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

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

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

+0

你是对的,完全分裂每个段落只是为了检索一个字感到浪费;你会在后面的段落中做些什么? – sarnold

回答

3

像这样的东西?

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

打印:[“开始”,“开始”,“对”]

如果你不想分裂每个段落,您可以搜索第一空间的指数,并抢每个字由那:

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

打印:[ '开始', '启动', '对']

说明的要求:

  • 找到与p.find( ' ')段落中的第一空间 - 返回位置
  • 然后通过P采取段落中第一个字符[:p.find('')]
  • 在该行的其余部分被称为list comprehension基本上遍历列表,并采取每个段落,p反过来
+0

我认为那就是那个!你介意解释这部分陈述的作用吗[p [:p.find('')]非常感谢。 – captaindogface

+0

肯定 - 见评论 – Gerrat

+0

谢谢Gerrant,一个孝顺的跟进。而不是找到第一个spacem,如果我想找到第一个换行符,我会使用find('\ n')再次感谢你 – captaindogface

0

假设每个段落用一个字开始(而不是说,空格或数字):

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

这就是所谓的“列表理解”。它通过list_of_par中的每个项目并将par[:par.index(" ")]应用于它。在这种情况下,从第0个字符开始到(但不包括)第一个空格([:par.index(" ")])为止,这段文本需要一段(par)。

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

0

你想如何把你的话铺开?你不想保证他们只是不是空白,或者他们不包含标点符号?

第一切口:

first_words = [ 
     paragraph.split(None, 1)[0] 
     for paragraph in paragraphs 
] 
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,。在找到第一个空白字符(返回由第一个单词和段落的其余部分组成的两个项目列表)或者一旦它到达字符串的末尾(返回一个单项列表,整个运行 - 段落)。

相关问题