分析
數(shù)字中經(jīng)常是3個(gè)數(shù)字一組,之后跟一個(gè)逗號(hào),因此規(guī)律為:***,***,***
正則式
代碼如下:
[a-z]+,[a-z]?
代碼如下:
import re
sen = "abc,123,456,789,mnp"
p = re.compile("/d+,/d+?")
for com in p.finditer(sen):
mm = com.group()
print "hi:", mm
print "sen_before:", sen
sen = sen.replace(mm, mm.replace(",", ""))
print "sen_back:", sen, '/n'
技巧
使用函數(shù)finditer(string[, pos[, endpos]]) | re.finditer(pattern, string[, flags]):
搜索string,返回一個(gè)順序訪問每一個(gè)匹配結(jié)果(Match對(duì)象)的迭代器。
代碼如下:
sen = "abc,123,456,789,mnp"
while 1:
mm = re.search("/d,/d", sen)
if mm:
mm = mm.group()
sen = sen.replace(mm, mm.replace(",", ""))
print sen
else:
break
這樣的程序針對(duì)具體問題,即數(shù)字3位一組,如果數(shù)字混雜與字母間,干掉數(shù)字間的逗號(hào),即把“abc,123,4,789,mnp”轉(zhuǎn)化為“abc,1234789,mnp”
更具體的是找正則式“數(shù)字,數(shù)字”找到后用去掉逗號(hào)的替換
代碼如下:
sen = "abc,123,4,789,mnp"
while 1:
mm = re.search("/d,/d", sen)
if mm:
mm = mm.group()
sen = sen.replace(mm, mm.replace(",", ""))
print sen
else:
break
print sen
新聞熱點(diǎn)
疑難解答
圖片精選