我想使用 pythonre.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"]
使用负前瞻和负后瞻:
> 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"]
.
演示。
因此,您希望在空格、逗号和不被数字包围的句点上进行拆分。这应该有效:
r" |(?<![0-9])[.,](?![0-9])"