[英]Replacing characters/delimiters (double comma) in CSV file using python
[英]Replacing comma for numerics in csv file
我有一個看起來像這樣的文件:
該文件用逗號分隔...但是,逗號也用於數字逗號。 好處是,我只需要刪除兩個數字之間的逗號即可:
a,b,100,000.00,2018-01-01,c
c,d,20,000.0,2017-12-01,e
e,f,1,000,000.00,2015-11-10,g
並將其轉換為:
a,b,100000.00,2018-01-01,c
c,d,20000.0,2017-12-01,e
e,f,1000000.00,2015-11-10,g
我正在考慮使用(?<=\\d),(?=\\d+\\.\\d+)
但這僅照顧(1000)處的逗號而不是(1000000)處的逗號。 有沒有辦法遞歸地做到這一點? 或者,我可以兩次調用此替換。
您可以使用
import re
s="""a,b,100,000.00,2018-01-01,c
c,d,20,000.0,2017-12-01,e
e,f,1,000,000.00,2015-11-10,g"""
print( re.sub(r"(?<![^,])\d{1,3}(?:,\d{3})*(?:\.\d+)?(?![^,])", lambda x: x.group().replace(',',''), s) )
參見Python演示 。 輸出:
a,b,100000.00,2018-01-01,c
c,d,20000.0,2017-12-01,e
e,f,1000000.00,2015-11-10,g
圖案細節
(?<![^,])
-逗號必須立即出現在字符串的左側或開頭 \\d{1,3}
-1至3位數字 (?:,\\d{3})*
-0個或多個序列
,
-逗號 \\d{3}
-三位數 (?:\\.\\d+)?
-可選的.
和1個以上的數字 (?![^,])
-逗號必須立即出現在字符串的右邊或結尾 使用lambda x: x.group().replace(',','')
從發現的匹配項中刪除所有逗號lambda x: x.group().replace(',','')
。
使用正向回顧和超前regex
:
import re
s = 'a,b,100,000.00,c'
print(re.sub(r'(?<=\d),(?=\d)', '', s))
# a,b,100000.00,c
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.