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