我有这个字符串:
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
,因为它中有字母。每个值始终用逗号分隔。
答案 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,则使用字符串连接添加。 最后,通过将这些部分与逗号连接来重建您的字符串。