0

我想更改下面的 Python 函数以涵盖我的 business_code 需要填充的所有情况。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 不同。我正在逐个状态验证数据状态。每个州的业务代码长度都不同(IL - 6 len,OH - 8 len)。所有代码必须均匀填充。因此,10 的 IL 代码应该产生 000010 等。我需要处理所有异常。使用命令行解析参数 (argparse) 和 string.zfill。

4

2 回答 2

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)
于 2013-02-25T23:18:17.163 回答
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)  
于 2013-02-27T13:45:21.000 回答