16

我正在尝试找到最pythonic的方式来拆分字符串,例如

“字符串中的一些单词”

成单个词。string.split(' ')工作正常,但它会在列表中返回一堆空白条目。当然我可以迭代列表并删除空格,但我想知道是否有更好的方法?

4

6 回答 6

38

只需使用my_str.split()没有' '.


此外,您还可以通过指定第二个参数来指示要执行多少次拆分:

>>> ' 1 2 3 4  '.split(None, 2)
['1', '2', '3 4  ']
>>> ' 1 2 3 4  '.split(None, 1)
['1', '2 3 4  ']
于 2012-10-23T10:11:10.180 回答
15

怎么样:

re.split(r'\s+',string)

\s是任何空格的缩写。\s+连续的空白也是如此。

于 2012-10-23T10:11:30.030 回答
7

不带参数使用string.split()re.split(r'\s+', string)代替:

>>> s = 'some words in a string   with  spaces'
>>> s.split()
['some', 'words', 'in', 'a', 'string', 'with', 'spaces']
>>> import re; re.split(r'\s+', s)
['some', 'words', 'in', 'a', 'string', 'with', 'spaces']

文档

如果sep未指定或 is None,则应用不同的拆分算法:连续空格的运行被视为单个分隔符,如果字符串具有前导或尾随空格,则结果将在开头或结尾不包含空字符串。因此,使用分隔符拆分空字符串或仅包含空格的字符串会None返回[].

于 2012-10-23T10:11:26.433 回答
3
>>> a = "some words in a string"
>>> a.split(" ")
['some', 'words', 'in', 'a', 'string']

split 参数不包含在结果中,所以我想关于你的字符串还有更多的东西。否则,它应该工作

如果您有多个空格,只需使用不带参数的 split()

>>> a = "some words in a string     "
>>> a.split()
['some', 'words', 'in', 'a', 'string']
>>> a.split(" ")
['some', 'words', 'in', 'a', 'string', '', '', '', '', '']

或者它只会将 a 拆分为单个空格

于 2012-10-23T10:11:59.817 回答
1

最 Pythonic 和正确的方法是不指定任何分隔符:

"some words in a string".split()

# => ['some', 'words', 'in', 'a', 'string']

另请阅读: 如何在 Python 中按 1 次或多次出现分隔符进行拆分?

于 2019-10-05T18:08:42.170 回答
0
text = "".join([w and w+" " for w in text.split(" ")])

将大空间转换为单个空间

于 2012-11-09T16:00:48.127 回答