在python中,如何在一定数量的单词后剥离字符串

在python中,如何在一定数量的单词后剥离字符串,python,strip,words,Python,Strip,Words,我有一段“Lorem ipsum foo bar foobar stuff等” 在python中,在本例4中,在一定数量的单词之后,我如何剥离该字符串?如果您只希望它们之间用空格分隔,那么: >>>s = "Lorem ipsum foo bar foobar stuff etc" >>>o = ' '.join(s.split(' ')[:4]) "Lorem ipsum foo bar" 我们应该做到这一点 这是非常幼稚的,如果你需要更有趣的东西,那么r

我有一段“Lorem ipsum foo bar foobar stuff等”

在python中,在本例4中,在一定数量的单词之后,我如何剥离该字符串?

如果您只希望它们之间用空格分隔,那么:

>>>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"

希望这有帮助

如果只希望它们之间用空格分隔,则:

>>>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"
希望这有帮助

我有两种解决方案

第一种使用更多内存:

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]
我有两个解决办法

第一种使用更多内存:

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]

@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  '

@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  '

除其他答案外,您还可以使用此表格。虽然没什么不同,但它很有效:

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"

除其他答案外,您还可以使用此表格。虽然没什么不同,但它很有效:

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"

如果否决票附带一条评论,则更有建设性:)谢谢!你认为你的代码真的有效吗?请在发布之前输入您的代码。如果投票附带观察,则投票更具建设性:)谢谢!你认为你的代码真的有效吗?请在发布银行最终使用您的第一个解决方案之前输入您的代码。感谢您最终使用您的第一个解决方案