亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

用正則表達式替換數字中的分隔符

用正則表達式替換數字中的分隔符

米脂 2023-07-27 17:53:19
我正在使用 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('.', ','): 用逗號替換最后一個點


查看完整回答
反對 回復 2023-07-27
  • 1 回答
  • 0 關注
  • 197 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號