使用负前瞻和负后瞻:
> s = "one two 3.4 5,6 seven.eight nine,ten"
> parts = re.split('\s|(?<!\d)[,.](?!\d)', s)
['one', 'two', '3.4', '5,6', 'seven', 'eight', 'nine', 'ten']
换句话说,您总是按\s
(空格)分隔,并且如果逗号和句点后面 数字(?!\d)
或前面(?<!\d)
数字,则仅按逗号和句点进行分隔。
。
:根据@verdesmarald注释,您可能需要使用以下内容:
> s = "one two 3.4 5,6 seven.eight nine,ten,1.2,a,5"
> print re.split('\s|(?<!\d)[,.]|[,.](?!\d)', s)
['one', 'two', '3.4', '5,6', 'seven', 'eight', 'nine', 'ten', '1.2', 'a', '5']
这将拆分"1.2,a,5"
为["1.2", "a", "5"]
。
。