填充函数 (Python) string.zfill
我想把下面这个Python函数改得更全面一些,以便在我的业务代码需要补零的情况下都能用到。Python里的string.zfill
函数可以处理这种情况,它会在字符串左边补零,直到达到指定的长度,但我之前从来没用过这个函数。
#function for formating business codes
def formatBusinessCodes(code):
""" Function that formats business codes. Pass in a business code which will convert to a string with 6 digits """
busCode=str(code)
if len(busCode)==1:
busCode='00000'+busCode
elif len(busCode)==2:
busCode='0000'+busCode
else:
if len(busCode)==3:
busCode='000'+busCode
return busCode
#pad extra zeros
df2['business_code']=df2['business_code'].apply(lambda x: formatBusinessCodes(x))
businessframe['business_code']=businessframe['business_code'].apply(lambda x: formatBusinessCodes(x))
financialframe['business_code']=financialframe['business_code'].apply(lambda x: formatBusinessCodes(x))
上面的代码是处理长度为6的业务代码,但我发现业务代码的长度有的少于6,有的多于6。我正在逐州验证数据。每个州的业务代码长度都不一样(比如,伊利诺伊州是6位,俄亥俄州是8位)。所有的代码都必须均匀补零。所以,如果伊利诺伊州的代码是10,就应该变成000010,等等。我需要处理所有的特殊情况。我会使用命令行参数解析(argparse)和string.zfill。
2 个回答
0
在编程中,有时候我们会遇到一些问题,可能是因为代码写得不够清晰,或者是我们对某些概念理解得不够透彻。比如说,有人可能在使用某个函数时,发现它的表现和预期不一样。这时候,我们就需要仔细检查代码,看看是不是哪里出了问题。
另外,编程的时候,保持代码的整洁和可读性是非常重要的。这样不仅自己能更容易理解,也方便别人来阅读和维护你的代码。如果代码写得杂乱无章,别人可能会很难搞清楚你想要实现什么。
总之,编程就像是写故事,清晰的表达和结构能让人更容易理解你的意图。遇到问题时,不妨先冷静下来,逐步分析,找到问题的根源。
parser.add_argument('-b',help='Specify length of the district code')
businessformat=args.d
businessformat=businessformat.strip()
df2['business_code']=df2['business_code'].apply(lambda x: str(x))
def formatBusinessCodes(code):
bus=code bus.zfill(4)
return bus
formatBusinessCodes(businessformat)
5
你可以使用 str.format 来格式化字符串:
def formatBusinessCodes(code):
""" Function that formats business codes. Pass in a business code which will convert to a string with 6 digits """
return '{:06d}'.format(code)
In [23]: formatBusinessCodes(1)
Out[25]: '000001'
In [26]: formatBusinessCodes(10)
Out[26]: '000010'
In [27]: formatBusinessCodes(123)
Out[27]: '000123'
格式 {:06d}
可以这样理解:
{...}
的意思是用format
中的一个参数来替换这里的内容, 比如code
。:
是格式说明的开始。0
表示用零来填充空位。6
是字符串的宽度。注意,如果数字超过6位,不会被截断。d
表示这个参数(比如code
)应该是整数类型。
需要注意的是,在 Python2.6 中,格式字符串需要多一个 0:
def formatBusinessCodes(code):
""" Function that formats business codes. Pass in a business code which will convert to a string with 6 digits """
return '{0:06d}'.format(code)