python re.split()按空格、逗号和句点进行拆分,但在1000或1.50这样的情况下则不这样做

2024-04-29 22:34:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用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"]


Tags: 字符串示例单词onesplit空格逗号two
2条回答

所以你想在空格上,逗号上,句点上,不被数字包围。这应该有效:

r" |(?<![0-9])[.,](?![0-9])"

使用一个否定的展望和一个否定的展望:

> 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

相关问题 更多 >