【问题标题】:How do I trim the number of words in Python?如何修剪 Python 中的单词数?
【发布时间】:2009-10-25 23:10:58
【问题描述】:

例如...

s = 'The fox jumped over a big brown log.'

k = FUNCTION(s,4)

k should be... "The fox jumped over"

我可以编写自己的函数,在空白处拆分、剪切列表然后加入列表。但这工作量太大了。

还有人知道更简单的方法吗?

【问题讨论】:

  • 在我看来,更简单的方法。是否足够高效不是我说的,但请记住:先编码,后优化。

标签: python string


【解决方案1】:

类似这样的:

def f(s, n):
    return ' '.join(s.split()[:n])

但它仍然在分裂、切片和加入......

【讨论】:

  • 你的函数返回 ['The', 'fox', 'jumped', 'over'] 而不是“The fox jumped over”。您需要返回 " ".join( s.split()[:n] ) 。
【解决方案2】:
x = "Hello how are you?"
' '.join(x.split()[1:3])
>>> "how are"

然后您可以更改列表中的数字 1 和 3 以获得您希望它返回的单词

def split_me(string, start, end, skip):
    return ' '.join(string.split()[start:end:skip])

记住列表是从 0 开始索引的,skip 是为了让你可以跳过单词:

split_me("Hello how are you", 0, 3, 2)
>>> 'hello are'

【讨论】:

  • 毫无意义的 startskip 参数。按照这种风格,您可以添加诸如split_stringjoin_string 等参数。问题解决了,停止编码并继续前进:)
【解决方案3】:

为什么说“工作量太大”?对你来说工作太多,或者对电脑来说太多?该代码是某些性能关键代码的一部分吗?

只做有效的事情,然后继续做更​​重要的事情。

【讨论】:

  • @alex:学习如何高效地做事很重要。但是,这应该在学习如何做事之后进行。并且没有任何地方可以使用“短”。
【解决方案4】:

试试这样的:

def f(s, n):
    return " ".join( s.split()[:n] )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-11
    相关资源
    最近更新 更多