首页 > 解决方案 > 保存以 0 开头的数字时保留前导零

问题描述

我正在尝试保存站点代码列表,例如:

site_codes = [1302,9033,1103,5005,0016]

然后我想在运行网络抓取之前将站点代码添加到 URL site_codes[i],例如:

for i in range(len(site_codes)): 
  
  Data_site_A.append("https://.../"+str(parameters[i])+"site="+str(site_codes[0]))
  Data_site_B.append("https://.../"+str(parameters[i])+"site="+str(site_codes[1]))

但我不能0016像其他号码一样保存到列表中。我尝试了很多方法,包括:

# make a string
str("{0}{1}{2}".format(0,0,16))

# fill the 0
"%04d" % 16

但它们都返回'0016'而不是0016. 所以当我输入'0016'网址时,它不起作用,因为它不是一个数字。

有没有办法将这个数字保存为0016?或者因为那print("%04d" % 16)会打印出一个 pure 0016,有没有办法从那里保存输出?

对于所需的输出,计算机应将其解释为:

"https://...."+str(parameters[i])+"site=0016")

标签: pythonpython-3.x

解决方案


# use regular expression

import re

site_codes = '''
         site code:
         site_A: 1302
         site_B: 9033
         site_C: 1103
         site_D: 5005
         site_E: 0016
         '''

site_codes = re.findall(r'\d+',site_codes)

for i in range(len(site_codes)): 
    Data_site_A.append("https://.../"+str(parameters[i])+"site="+str(site_codes[0]))
    Data_site_B.append("https://.../"+str(parameters[i])+"site="+str(site_codes[1]))

推荐阅读