填充函数 (Python) string.zfill

0 投票
2 回答
4166 浏览
提问于 2025-04-17 17:06

我想把下面这个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)

撰写回答