我想使用python re.split()通过空格,逗号和句点将字符串拆分为单个单词.但我不想"1,200"被分裂["1", "200"]或["1.2"]分裂成["1", "2"].
例
l = "one two 3.4 5,6 seven.eight nine,ten"
Run Code Online (Sandbox Code Playgroud)
结果应该是 ["one", "two", "3.4", "5,6" , "seven", "eight", "nine", "ten"]
Joã*_*lva 52
使用负向前瞻和负面后瞻:
> 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']
Run Code Online (Sandbox Code Playgroud)
换句话说,您总是按\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']
Run Code Online (Sandbox Code Playgroud)
这将分裂"1.2,a,5"成["1.2", "a", "5"].
演示.