Python中空格上的拆分字符串

Python中空格上的拆分字符串,python,regex,string,split,whitespace,Python,Regex,String,Split,Whitespace,我正在寻找与 String str = "many fancy word \nhello \thi"; String whiteSpaceRegex = "\\s"; String[] words = str.split(whiteSpaceRegex); ["many", "fancy", "word", "hello", "hi"] 没有参数的str.split()方法在空格上拆分: >>> "many fancy word \nhello \thi

我正在寻找与

String str = "many   fancy word \nhello    \thi";
String whiteSpaceRegex = "\\s";
String[] words = str.split(whiteSpaceRegex);

["many", "fancy", "word", "hello", "hi"]
没有参数的
str.split()
方法在空格上拆分:

>>> "many   fancy word \nhello    \thi".split()
['many', 'fancy', 'word', 'hello', 'hi']

另一种方法是通过
re
模块。它做的是匹配所有单词的反向操作,而不是按空格吐出整个句子

>>> import re
>>> s = "many   fancy word \nhello    \thi"
>>> re.findall(r'\S+', s)
['many', 'fancy', 'word', 'hello', 'hi']
上面的正则表达式将匹配一个或多个非空格字符。

使用
split()

请记住,如果对没有空格的字符串使用
split()
,则该字符串将在列表中返回给您

例如:

>>> "ark".split()
['ark']

同样值得注意的是,如果您只想要第一个单词(这意味着将
1
作为第二个参数传递),您可以使用
None
作为第一个参数:
s.split(None,1)
如果您只想要第一个单词,请使用str.partition。@yak:您可以编辑您的注释吗。现在听起来,s.split(None,1)只返回第一个单词。它给出了一个大小为2的列表。第一项是第一个单词,第二项是字符串的其余部分
s.split(无,1)[0]
将返回第一个单词only@galois不,它使用自定义实现(速度更快)。还要注意,它处理前导空格和尾随空格的方式不同。@KishorPawar我很不清楚您想要实现什么。是否希望按空格分割,但忽略单引号子字符串中的空格?如果是这样,你可以调查,这可能是你正在寻找的。否则我建议你问一个新问题——你会得到一个更快更详细的答案。这会在这行的末尾给我一个空白标记。不知道为什么,原来的那一行连这个都没有。也许这忽略了换行符?@Gulzar在结尾处做一个
strip()
,注意如果性能有问题,这通常比str.split慢。
>>> "ark".split()
['ark']