使用regex查找逗号被数字分隔的地方

2024-06-24 11:50:55 发布

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

我需要找出逗号两边用数字隔开的地方。你知道吗

例如:

SampleString ='A,B,C, 1, 2, 3, 4, G'

我需要用逗号前后的所有空格替换逗号,只用一个逗号(没有空格)。只有当逗号分隔数字时,我才需要这样做。你知道吗

CleanString =re.sub(r([0-9]+)\s?,\s?([0-9]+)' ,r"\g<1>,\g<2>",SampleString)

这个输出给我A,B,C, 1,2, 3,4, G。 我需要的输出是A,B,C, 1,2,3,4, G


Tags: re地方数字空格逗号samplestringcleanstring
3条回答
CleanString = re.sub(r"(?<=\d)\s*,\s*(?=\d)", ",", SampleString)

(?<=\d)是要求在当前位置前面有一个数字(\d)的lookback

(?=\d)是一种向前看,需要一个数字跟在当前位置后面

你不需要捕捉任何东西,也就是说,你不需要任何额外的括号。无论如何,最好知道lookaheads和lookbehinds是非捕获的(除非它们包含括号)。你知道吗

这个正则表达式使用lookahead:

((\d+)\s*,\s*)(?=\d)

这与数字(可选)匹配,后跟空格(可选)后跟逗号(可选)后跟空格(仅当该序列后跟数字时)。因此,在字符串1, 2 , 3中,第一个匹配项是1,。你知道吗

import re
SampleString ='A,B,C, 1, 2 , 3 , 4, G'
CleanString = re.sub(r'((\d+)\s*,\s*)(?=\d)', r"\g<2>,", SampleString)
print(CleanString)

印刷品:

A,B,C, 1,2,3,4, G

可以使用以下正则表达式:

import re

SampleString = 'A, B,B, M1, 3, 44, 45, 46, 47, G, 1, 33'

CleanString = re.sub(r'(\b\d+)(\s*,\s*)(?=\d+\b)', r'\1,', SampleString)

print(CleanString)

输出:

A, B,B, M1, 3,44,45,46,47, G, 1,33

相关问题 更多 >