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のbusiness_codeを処理しますが、business_codesの長さが<と>6で異なることがわかりました。状態ごとにデータの状態を検証しています。各状態は、business_codeの長さが異なります(IL-6 len、OH-8len)。すべてのコードは均等に埋める必要があります。したがって、ILのコードが10の場合、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 に答える