gpt4 book ai didi

python re.split() 以空格、逗号和句点分隔,但在 1,000 或 1.50 等情况下则不行

转载 作者:IT老高 更新时间:2023-10-28 22:24:28 28 4
gpt4 key购买 nike

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

最佳答案

使用否定的前瞻和否定的后瞻:

> 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 分割。 (空格),并且只有在 not 后跟 (?!\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

关于python re.split() 以空格、逗号和句点分隔,但在 1,000 或 1.50 等情况下则不行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12683201/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com