Re: [問題] 請問有關擷取資料的問題?

看板Python作者 (小g)時間17年前 (2008/06/18 10:46), 編輯推噓4(404)
留言8則, 4人參與, 最新討論串4/6 (看更多)
※ 引述《clara830 (...)》之銘言: : 不好意思再請教一個進階的問題.... : 假設我現在有一個list是這樣: : text = ['ABCD:from XXX X 12(V) XXX', 'EF:XXX XX', 'GH: from XXX XX 345(V) XX'] : 比如說我現在想要讓程式判斷 : : 如果裡面有包含'from'的話 : 就把其中冒號前面的字串找出來 以及找出其中(V)前面的字串 : 以這個例子來說的話 也就是希望擷取出 [(ABCD, 12), (GH, 345)] : 好像有點複雜.....不知道這有辦法寫出來嗎? : 現在好像還想不到怎麼解決 跟前面的回答基本一樣 store = [] text = [....] for i in text: if 'from' in i: seg = i.split(':') first_param = seg[0] second_param = seg[1].split('(V)')[0] store.append((first_param, second_param)) print store -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.230.75.133

06/18 10:50, , 1F
可以改成 seg[1].split('(V)')[0].split()[-1]
06/18 10:50, 1F

06/18 10:54, , 2F
如果還有更複雜的建議你學 pyparsing...不在意速度的話
06/18 10:54, 2F

06/18 13:49, , 3F
我會想用regular expression耶
06/18 13:49, 3F

06/18 13:52, , 4F
"(.*):from .* (\d+)\(V\).*"之類的
06/18 13:52, 4F

06/18 19:27, , 5F
謝謝!!我再仔細研究一下~
06/18 19:27, 5F

06/19 10:49, , 6F
請問如果把text裡面改成GH: from XXX XX 345(V) XX 67(V)
06/19 10:49, 6F

06/19 10:50, , 7F
好像只找的到345而沒找到67?
06/19 10:50, 7F

06/19 13:13, , 8F
那當然啊..他的code只抓前一個呀.我看你得好好打基礎
06/19 13:13, 8F
文章代碼(AID): #18M7SM3V (Python)
討論串 (同標題文章)
文章代碼(AID): #18M7SM3V (Python)