1

这是一个示例输入:

(a1 b2 c3)

由 ' ', '(', ')' 分割,这是所需的输出:

['(', 'a1', ' ', 'b2', ' ', 'c3', ')']

Pythonism 的做法是什么?

4

2 回答 2

3

使用 Python 的正则表达式模块

>>> import re
>>> re.split(r'(\w+)', '(a1 b2 c3)')
['(', 'a1', ' ', 'b2', ' ', 'c3', ')']

或者,与findallorokusaki 的答案一样,但具有字符类(也算作_单词字符):

>>> re.findall(r'\W+|\w+', '(a1 b2 c3)')
['(', 'a1', ' ', 'b2', ' ', 'c3', ')']

或者,如果您想明确说明仅在(, ,上进行拆分)

>>> re.split(r'([^\(\) ]+)', '(a1 b2 c3)')
['(', 'a1', ' ', 'b2', ' ', 'c3', ')']
于 2012-12-30T02:31:28.503 回答
0
>>> import re
>>> re.findall(r'[a-zA-Z0-9]+|[^a-zA-Z0-9]', '(a1 a2 a3)')
['(', 'a1', ' ', 'a2', ' ', 'a3', ')']
于 2012-12-30T02:29:07.090 回答