我有一個不同格式的字串串列,其中一些示例是:-
a=['08/58/13ND','08/58/16ND','08/58/18ND','114/15ND','04/2010/PB','AB/23/2016/CHE']
在此,“/”之后的最后一位數字是每個字串的 YEAR。一些字串的年份格式完美,例如 2010 和 2016,我想保持原樣。但對于其他字串,“/”之后的最后一位數字有 13、16、18 和 15 等。
我希望它們采用 YYYY 格式。
預期輸出:
['08/58/2013/ND','08/58/2016/ND','08/58/2018/ND','114/2015/ND','04/2010/PB','AB/23/2016/CHE']
uj5u.com熱心網友回復:
您可以嘗試如下:
import re
a = ['08/58/13ND','08/58/16ND','08/58/18ND','114/15ND','04/2010/PB','AB/23/2016/CHE']
pattern = r'(\d{2})(?=[A-Z] $)'
b = [re.sub(pattern,r'20\1/', x) for x in a]
print(b)
['08/58/2013/ND', '08/58/2016/ND', '08/58/2018/ND', '114/2015/ND', '04/2010/PB', 'AB/23/2016/CHE']
說明r'(\d{2})(?=[A-Z] $)':
(\d{2})[A-Z]是一個 2 位數字的捕獲組,只有在字串末尾有一個或多個字符時才會匹配$。為此,我們使用積極的前瞻:(?=[A-Z] $).
說明r'20\1/':
\1參考上述捕獲組;- 前置
20(假設您的所有年份都是>= 2000)并附加/.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/505419.html
