在特定位置的字符串的开头添加一个数字

时间:2016-03-15 12:07:03

标签: python regex string

我有这个字符串:

abc,12345,abc,abc,abc,abc,12345,98765443,xyz,zyx,123

我可以使用什么来在此字符串中的每个数字的开头添加0?那么我该如何将该字符串转换为:

abc,012345,abc,abc,abc,abc,012345,098765443,xyz,zyx,0123

我试过玩Regex,但我不确定如何有效地使用它来产生我想要的结果。我需要它来匹配一串数字而不是正整数,但只有字符串中的数字,所以不是这样的:

1234abc567加入01234abc567,因为它中有字母。每个值始终用逗号分隔。

3 个答案:

答案 0 :(得分:1)

使用re.sub

re.sub(r'(^|,)(\d)', r'\g<1>0\2', s)

re.sub(r'(^|,)(?=\d)', r'\g<1>0', s)

re.sub(r'\b(\d)', r'0\1', s)

答案 1 :(得分:1)

尝试以下

re.sub(r'(?<=\b)(\d+)(?=\b)', r'\g<1>0', str)

答案 2 :(得分:1)

如果数字总是用字符串中的逗号分隔,则可以使用基本列表方法来获得所需的结果。

让我们说你的字符串叫x

y=x.split(',')
x=''
for i in y:
    if i.isdigit():
        i='0'+i
    x=x+i+','

这段代码的作用如下: 根据逗号的位置将字符串拆分为多个部分,然后返回部分列表。 检查片段是否实际为数字,如果它们是0,则使用字符串连接添加。 最后,通过将这些部分与逗号连接来重建您的字符串。