看板 Python 關於我們 聯絡資訊
※ 引述《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... -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 149.159.27.253 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1427651727.A.893.html
ckc1ark: 你有先split過嗎 要不然.*不是會match到行尾 03/30 09:12
hohiyan: 唔...沒辦法split。我的例子寫的不好。"AA";"BB"之間也是 03/30 10:19
hohiyan: 用;隔開,所以也沒辦法用split(';')先處理過 03/30 10:19
hohiyan: 或是我疏忽了什麼? @_@ 03/30 10:19