1

...请注意,值将由一个或多个空格或 TAB 字符分隔

如果有多个不同类型的分隔字符,我该如何使用 split() 方法,就像这种情况一样?

4

6 回答 6

2

使用正则表达式进行拆分,而不仅仅是一个分隔符:

http://docs.python.org/2/library/re.html

于 2012-12-06T05:15:09.537 回答
2

默认情况下 split 可以处理多种类型的空白,不确定它是否足以满足您的需要,但请尝试:

>>> s = "a \tb     c\t\t\td"
>>> s.split()
['a', 'b', 'c', 'd']

它当然适用于混合的多个空格和制表符。

于 2012-12-06T05:16:17.887 回答
2

我遇到了一些由不同空格字符分隔的字符串的相同问题,并使用了\s,如正则表达式库规范中所示。

\s 匹配任何空白字符,这相当于集合 [ \t\n\r\f\v]。

您将需要导入re作为正则表达式处理程序:

import re
line = "something separated\t by \t\t\t different \t things"
workstr = re.sub('\s+','\t',line)

\s因此,任何重复一次或多次 ( ) 的空格或分隔符 ( +) 都将转换为单个列表 ( \t),您可以使用 split('\t') 重新处理

workstr = "something`\t`separated`\t`by`\t`different`\t`things"
newline = workstr.split('\t')
newline = ['something','separated','by','different','things']
于 2012-12-06T13:48:54.063 回答
1

先进行文本替换,然后拆分。

例如用空格替换所有制表符,然后按空格分割。

于 2012-12-06T05:14:12.437 回答
1

您可以先使用正则表达式:

import re
re.sub('\s+', ' ', 'text     with    whitespace        etc').split()
['text', 'with', 'whitespace', 'etc']
于 2012-12-06T05:14:20.690 回答
1

对于空白分隔符,str.split()已经做了你可能想要的。来自Python 标准库

海峡 拆分([ sep [, maxsplit ]])

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

例如,' 1 2 3 '.split()返回['1', '2', '3']' 1 2 3 '.split(None, 1)返回['1', '2 3 ']

于 2012-12-06T05:19:21.943 回答