我有幾個Python腳本是爲Assessor的辦公室寫的,我在那裏工作。其中大多數要求輸入包裹ID號碼(然後用於通過odbc抓取某些數據)。他們對於如何輸入包裹ID的方式並不一致。Python如何強制一個字符串匹配另一個字符的格式
因此,這裏是我的問題,他們的3種方式之一輸入包裹ID:
1: '1005191000060'
2: '001005191000060'
3:「0010-05- 19-100-006-0'
第三種方法是正確的方法,所以我需要確保輸入固定爲始終匹配該格式。當然,他們寧願在ID中輸入前兩種方式之一。包裹號碼必須總是15位數字(20用破折號)
我目前有一個關於如何修復包裹ID的工作方法,但它非常難看。我想知道是否有人知道更好的方式(或更多的「Pythonic」方式)。我有一個通常被導入到所有這些腳本的函數。以下是我有:
import re
def FormatPID(in_pid):
pid_format = re.compile('\d{4}-\d{2}-\d{2}-\d{3}-\d{3}-\d{1}')
pid = in_pid.zfill(15)
if not pid_format.match(pid):
fixed_pid = '-'.join([pid[:4],pid[4:6],pid[6:8],pid[8:11],pid[11:-1],pid[-1]])
return fixed_pid
else:
return pid
if __name__ == '__main__':
pid = '1005191000060'
## pid = '001005191000060'
## pid = '0010-05-19-100-006-0'
# test
t = FormatPID(pid)
print t
這樣確實不錯,但我一直在用了一段時間這個醜陋的代碼困擾,我想那裏一定是比它切片一個更好的辦法。我希望有一種方法可以「強制」將其轉換爲字符串以匹配「pid_format」變量。有任何想法嗎?我找不到任何要做到這一點正則表達式模塊中代替手工切片
可愛......我試圖找到一些沿線的東西。我只是看着我正在做的醜陋的切片手術。非常感謝你! – cmackey