我想使用python re.split()
通过空格,逗号和句点将字符串拆分为单个单词。但我不希望将"1,200"
拆分为["1", "200"]
或["1.2"]
,以便将其拆分为["1", "2"]
。
实施例
l = "one two 3.4 5,6 seven.eight nine,ten"
结果应为["one", "two", "3.4", "5,6" , "seven", "eight", "nine", "ten"]
答案 0 :(得分:47)
使用负向前瞻和负面后瞻:
> 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 强>
答案 1 :(得分:3)
所以你想要分隔空格,以及没有数字包围的逗号和句号。这应该有效:
r" |(?<![0-9])[.,](?![0-9])"