先說明本人沒有任何目的,不是作業也不是工作。
本身從事電腦程式工作已久,但最近有個搞財務工程的朋友給我一個難題。
一直苦苦思索到現在只有想到一半的解法
所以跑來01純粹"以武會友"
想看看是否有人能解!
如下的一堆資料
2809,京城銀,"11,220,655",153,"61,230,329",5.35,5.48,5.20,5.46,+,0.19,5.46,2,5.47,12,16.55
2812,台中銀,"3,294,297",782,"22,636,005",6.96,6.98,6.80,6.95,+,0.25,6.89,10,6.95,12,6.15
2816,旺旺保,"48,573",23,"336,330",6.99,6.99,6.81,6.95,+,0.24,6.90,1,6.94,2,0.00
2820,華票,"1,690,033",337,"6,838,349",4.04,4.11,3.97,4.01,+,0.04,4.01,121,4.03,1,8.72
2832,台產,"379,071",130,"5,360,168",14.30,14.30,14.00,14.25,+,0.25,14.05,2,14.25,6,6.79
目的是想把所有雙引號包起來的數字,以第一行為例"11,220,655"變成"11220655"、"61,230,329"變成"61230329",也就是要去掉雙引號包起來裡面的逗號(千分位符號),但其他非雙引號相關的逗號則不改變。
這個問題複雜的地方就在於有些包起來裡面的有可能是一個兩個或三四個逗號
本人直覺想到用Regular Expression來達到程式自動化的目的。
卻發現用"[0-9]+這樣的寫法似乎只能滿足某些條件
或許是小弟學藝不精
希望可以互相切磋!
用Excel或其他工具不在此討論,純粹想研究正規表示式的寫法!
joenmakiki wrote:
感謝回復如果照你([...(恕刪)

這種某個范圍內多段且段數不定的一次解決我搞不定
在EditPlus里只想得出("[0-9]+),([0-9]+)再加多次替換的方法
等著看有無高人來解決,使用Shell腳本來一次完成?
除了第一個動作適合用RE的方法做外
method的動作應該直接用replace替代即可
還是應要求用RE的方示做 ^^
我想這個方法應該也不是樓主要的吧
不過寫出來就順手po一下囉
import re, string
def trimComma(match):
p2 = re.compile(',')
strobj = match.group()
return p2.sub('',strobj)
if __name__ == '__main__':
input_data = ['2809,京城銀,"11,220,655",153,"61,230,329",5.35,5.48,5.20,5.46,+,0.19,5.46,2,5.47,12,16.55','2812,台中銀,"3,294,297",782,"22,636,005",6.96,6.98,6.80,6.95,+,0.25,6.89,10,6.95,12,6.15','2816,旺旺保,"48,573",23,"336,330",6.99,6.99,6.81,6.95,+,0.24,6.90,1,6.94,2,0.00','2820,華票,"1,690,033",337,"6,838,349",4.04,4.11,3.97,4.01,+,0.04,4.01,121,4.03,1,8.72','2832,台產,"379,071",130,"5,360,168",14.30,14.30,14.00,14.25,+,0.25,14.05,2,14.25,6,6.79']
p = re.compile('"([0-9]+,)*[0-9]+"')
for s in input_data:
print s
print p.sub(trimComma,s)
內文搜尋



























































































