如何规范化1:2:3'到' 01:02:03'通过使用Python的re模块?

时间:2015-05-22 05:17:50

标签: python regex

我想规范化字符串,如

...

'1:2:3','10:20:30'

使用Python的re模块, 所以我试图选择像' 1:2:3'然后匹配单个号码' 1'' 2'' 3' ...,这是我的模式:

'01:02:03','10:20:30'

它有效,但我认为这种模式不够简单,任何人都可以帮我简化它?或者使用map()/ split(),如果它更复杂。

3 个答案:

答案 0 :(得分:3)

\b匹配单词字符和非单词字符。

>>> import re
>>> l = ['1:2:3','10:20:30']
>>> [re.sub(r'\b(\d)\b', r'0\1', i) for i in l]
['01:02:03', '10:20:30']

DEMO

答案 1 :(得分:1)

re.sub(r"(?<!\d)(\d)(?!\d)",r"0\1",test_str)

您可以将其简化为此。请参阅演示。

https://regex101.com/r/nD5jY4/4#python

如果字符串类似

x="""'1:2:3','10:20:30'"""

然后做

print ",".join([re.sub(r"(?<!\d)(\d)(?!\d)",r"0\1",i) for i in x.split(",")])

答案 2 :(得分:1)

您可以使用re执行此操作,但几乎没有人会知道它之后是如何工作的。我建议改为:

':'.join("%02d" % int(x) for x in original_string.split(':'))

它更清晰如何运作。