如何在python中的一定数量的单词后去掉一个字符串

时间:2014-01-09 19:59:20

标签: python strip words

我有一段“Lorem ipsum foo bar foobar stuff等” 在python中,在这种情况下,在一定数量的单词之后我怎么能删除这个字符串?

4 个答案:

答案 0 :(得分:2)

如果你只想用空格分隔,那么:

>>>s = "Lorem ipsum foo bar foobar stuff etc"
>>>o = ' '.join(s.split(' ')[:4])
"Lorem ipsum foo bar"

应该这样做。

这是非常幼稚的,如果你需要更高级的东西,那么regex就是你要走的路。通过更高档的东西,我指的是比空格,语法标点等更多的分隔符。

例如:

>>>import re
>>>s = "Lorem ipsum foo bar foobar stuff etc"
>>>l = re.split('[\n \r \s \t]', s)
['Lorem', 'ipsum', 'foo', 'bar']
>>>str.join(' ', l)
"Lorem ipsum foo bar"

希望这有帮助!

答案 1 :(得分:2)

@ PauloBlu的答案在大多数情况下都有效,除非你的段落包含带有不均匀空格的单词。 在这种情况下,正则表达式可以运作奇迹

>>> s = "Lorem ipsum\tfoo    bar foobar stuff etc"
>>> ''.join(re.findall("^[^\s]+|\s+[^\s]+", s)[:4])
'Lorem ipsum\tfoo    bar'

而使用str.split + str.join可能无法为您提供正确的结果

>>> ' '.join(s.split(' ')[:4])
'Lorem ipsum\tfoo  '

答案 2 :(得分:1)

我有两个解决方案。

第一个使用更多内存:

s = "Lorem ipsum foo bar foobar stuff etc"
print ' '.join(s.split(" ")[:4])

第二种可能更慢:

s = "Lorem ipsum foo bar foobar stuff etc"
start = 0
for i in range(4): # number of words
    start = s.find(" ", start+1)
print s[:start]

答案 3 :(得分:1)

除了其他答案,您还可以使用此表单。它并没有那么不同,但它确实有效:

s = "Lorem ipsum foo bar foobar stuff etc"

print ' '.join(s.split(' ', 4)[:-1]) 
# the maxsplit arg of split('4' here) could be set to any number 'n'

"Lorem ipsum foo bar"