【问题标题】:Find the first word of a paragraph inside a list在列表中查找段落的第一个单词
【发布时间】:2019-01-22 16:56:55
【问题描述】:

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

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

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

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

【问题讨论】:

  • 你说得对,仅仅为了检索一个单词就完全分割每个段落感觉很浪费;稍后你要处理这些段落吗?

标签: python list paragraph


【解决方案1】:

这样的?

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

【讨论】:

  • 我想就是这个!你介意解释一下这部分语句的作用吗[p[:p.find(' ')] 非常感谢。
  • 谢谢Gerrant,一位孝顺的跟进者。如果我想找到第一个换行符而不是找到第一个空格,我会使用 find('\n') 再次感谢您
  • @captaindogface:是的……但是最简单的观察方法之一就是尝试一下! Python 之所以如此出色的语言之一是尝试这样的事情非常容易。
  • 我不喜欢拆分的,显然您不会拆分整个段落以仅获取第一个单词,这没有任何意义。 find(' ') 肯定更可取,而且代码保持紧凑,我真的很喜欢。这就是 python 的意义所在。
  • @zinking:你可以限制拆分的数量:p.split(' ', 1)
【解决方案2】:

祝你好运:

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() 在找到第一个空白字符(返回由第一个单词和段落的其余部分组成的两项列表)或到达字符串末尾(返回一个-项目列表,整个连续段落)。

【讨论】:

    【解决方案3】:

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

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

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

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

    【讨论】:

      【解决方案4】:

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

      初剪:

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

      【讨论】:

        猜你喜欢
        • 2020-08-18
        • 1970-01-01
        • 2013-12-19
        • 1970-01-01
        • 2012-05-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多