我有一段“Lorem ipsum foo bar foobar stuff等” 在python中,在这种情况下,在一定数量的单词之后我怎么能删除这个字符串?
答案 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"