使用负前瞻和负后瞻:
> 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)数字,则仅按逗号和句点进行分隔。
DEMO 。
编辑 :根据@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"]。
DEMO 。



