2024-04-29 22:34:29 发布
网友
我想使用pythonre.split()将字符串按空格、逗号和句点拆分为单个单词。但我不想把"1,200"分成["1", "200"]或["1.2"]分成["1", "2"]。
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"]
["one", "two", "3.4", "5,6" , "seven", "eight", "nine", "ten"]
所以你想在空格上,逗号上,句点上,不被数字包围。这应该有效:
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)前面有数字的情况下才用逗号和句点分隔。
\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"]。
"1.2,a,5"
["1.2", "a", "5"]
所以你想在空格上,逗号上,句点上,不被数字包围。这应该有效:
使用一个否定的展望和一个否定的展望:
换言之,您总是用
\s
(空白)分隔,并且只有在(?!\d)
后面或(?<!\d)
前面有数字的情况下才用逗号和句点分隔。DEMO。
编辑:根据@verdesmarald注释,您可能需要使用以下内容:
这将把
"1.2,a,5"
分成["1.2", "a", "5"]
。DEMO。
相关问题 更多 >
编程相关推荐