我正在使用 python 和 regexp,需要將所有千位分隔符 (,.) 替換為空字符串 (''),并且只允許逗號 (,) 作為小數分隔符或沒有小數。所以 - - 1,500.55 -> 1500,55 - 1.500.55 -> 1500,55 - 1500.55 -> 1500,55 - 1,500 -> 1500 - 1 500 -> 1500它也可能是字符串中的一些字母,也應該用空字符串替換 -支付 1,500.55 -> 1500,55我有這樣的代碼,但該代碼會錯誤地接受逗號作為千位分隔符,并且不會將點替換為逗號作為小數分隔符 -cleaned = re.sub(r"[^\d,]+", '', clean_str)這是關于錢的,所以你可以假設如果有小數(分),可能會有兩位小數。
1 回答

慕萊塢森
TA貢獻1810條經驗 獲得超4個贊
您可以使用此sub + replace代碼:
>>> import re
>>> reg = re.compile(r'[,.]+(?!\d{2}$)|[^\d.,]+')
>>> arr = ['1,500.55', '1.500.55', '1500.55', '1,500', '1 500', '1,500,55']
>>> for i in arr:
... print ( reg.sub('', i).replace('.', ',') )
...
1500,55
1500,55
1500,55
1500
1500
1500,55
細節:
[,.]+(?!\d{2}$)
: 如果結束前沒有 2 位數字,則匹配逗號或點|
: 或者[^\d.,]+
:匹配 1 個或多個非數字、點和逗號的任意字符''
: 替換為空字符串replace('.', ',')
: 用逗號替換最后一個點
添加回答
舉報
0/150
提交
取消