方法一、利用正則表示式用法:## 總結## ^ 匹配字串的開始。## $ 匹配字串的結尾。## \b 匹配一個單詞的邊界。## \d 匹配任意數字。## \D 匹配任意非數字字元。## x? 匹配一個可選的 x 字元 (換言之,它匹配 1 次或者 0 次 x 字元)。## x* 匹配0次或者多次 x 字元。## x+ 匹配1次或者多次 x 字元。## x{n,m} 匹配 x 字元,至少 n 次,至多 m 次。## (a|b|c) 要麼匹配 a,要麼匹配 b,要麼匹配 c。## (x) 一般情況下表示一個記憶組 (remembered group)。你可以利用 re.search 函式返回物件的 groups() 函式獲取它的值。## 正則表示式中的點號通常意味著 “匹配任意單字元”[plain] viewplain copyimport re string = u"127米" print re.findall(r"\d+\.?\d*", string) 方法二、利用filter(str.isdigit,iterable)[plain] viewplain copystring = u"127米" print (filter(str.isdigit, string)) bug:TypeError:descriptor"isdigit"requiresa"str"objectbutreceiveda"unicode"原因:string不是str型別修改為:[plain] viewplain copystring = u"127米" string2 = string.encode("gbk") print (type(str)) print (filter(str.isdigit, string2)) 結果:<type"str">127注意:要提取的字串不能命名為str,否則會出現TypeError:isdigit()takesnoarguments(1given)因為str和filter裡的str重名了。
方法一、利用正則表示式用法:## 總結## ^ 匹配字串的開始。## $ 匹配字串的結尾。## \b 匹配一個單詞的邊界。## \d 匹配任意數字。## \D 匹配任意非數字字元。## x? 匹配一個可選的 x 字元 (換言之,它匹配 1 次或者 0 次 x 字元)。## x* 匹配0次或者多次 x 字元。## x+ 匹配1次或者多次 x 字元。## x{n,m} 匹配 x 字元,至少 n 次,至多 m 次。## (a|b|c) 要麼匹配 a,要麼匹配 b,要麼匹配 c。## (x) 一般情況下表示一個記憶組 (remembered group)。你可以利用 re.search 函式返回物件的 groups() 函式獲取它的值。## 正則表示式中的點號通常意味著 “匹配任意單字元”[plain] viewplain copyimport re string = u"127米" print re.findall(r"\d+\.?\d*", string) 方法二、利用filter(str.isdigit,iterable)[plain] viewplain copystring = u"127米" print (filter(str.isdigit, string)) bug:TypeError:descriptor"isdigit"requiresa"str"objectbutreceiveda"unicode"原因:string不是str型別修改為:[plain] viewplain copystring = u"127米" string2 = string.encode("gbk") print (type(str)) print (filter(str.isdigit, string2)) 結果:<type"str">127注意:要提取的字串不能命名為str,否則會出現TypeError:isdigit()takesnoarguments(1given)因為str和filter裡的str重名了。