Re: [問題] 解析 list 問題

作者: hohiyan (海洋)   2015-03-30 01:55:24
※ 引述《hohiyan (海洋)》之銘言:
: 各位版友大家好,我目前在處理一個 tab-delimited 格式的 txt 檔。
: 其中有一個欄位的資料是這樣的
: file
: row1: ["AA","BB","CC"] School1; ["DD","EE"] School2
: row2: ["FF"] School3; ["GG"] School4 ["HH"] School5
: row3: School6
: (以上的資料用csv.reader讀進去後通通都在同一個欄位中)
: 其中"AA"、"BB"等為人名,School 是學校名稱
: row3 因為該筆資料只有一個人,所以原始資料就省略了人名,只有學校名稱
: 現在的目標是要把所有的學校名稱抓出來,然後各自寫入單獨的欄位。
: 變成
: 1 school1 school2
: 2 school3 school4 school5
: 3 school6
: 我現在有點卡住,想不太出來該怎麼解析每一列的資料,
: 想請問有沒有方法能夠判斷每一列中是否有["FF"]這樣的資料,然後抓後面的school?
: 我現在是自學python,所以只想得到.split()這個東西,但很明顯不太適用…
: 還煩請版友提示一些想法或語法的關鍵字供我參考研究
: 感謝~
大家好,我又來問問題了
研究了regex之後,我現在知道怎麼分別抓取人名跟學校名稱了。
我用來match 學校名稱的規則為
p = re.compile(r'\]\s(.*?);|\]\s(.*)')
但產生的結果都會多一個空白欄位,例如match row1 之後的結果會是
[("School 1", ""), ("", "School 2")
我猜大概是我用了 |(or) 的關係,所以變成兩個規則都去match
沒match到的就回傳空白字元 (???
請問該怎麼解決這個問題呢?
謝謝
regex 真的好複雜 Orz...
作者: ckc1ark (偽物)   2015-03-30 09:12:00
你有先split過嗎 要不然.*不是會match到行尾
作者: hohiyan (海洋)   2015-03-30 10:19:00
唔...沒辦法split。我的例子寫的不好。"AA";"BB"之間也是用;隔開,所以也沒辦法用split(';')先處理過或是我疏忽了什麼? @_@

Links booklink

Contact Us: admin [ a t ] ucptt.com