[問題] 正則表達分割字串(已解決)

看板Python作者 (那真是太諷刺了紹安)時間5年前 (2019/03/22 10:09), 5年前編輯推噓6(6014)
留言20則, 5人參與, 5年前最新討論串1/1
小弟我最近碰到一個問題 爬蟲爬出來的資料很亂 沒有分行符,所以會變成一個字串是"id加上資料" 比方說是 12345姆咪可愛12346測試的1號資料12347小貓旅館 我在想要怎麼把這些分開@@ 變成['12345姆咪可愛','12346測試的1號資料','12347小貓旅館']這樣子 想用正則表達,可是對正則表達式不是很熟= = 目前想到[0-9]{5}([\s\S]*) 但是顯然只會找到全部... 我的id和資料間又沒有特定的符號可以讓我分割 請問各位前輩有沒有什麼方法好解決@@ 補充一下,資料會含有數字和非數字,我想法是遇到下一個五位數字就切@@ 但是不太知道怎麼寫 -- 我的意中人是個蓋世英雄,有一天他會踩著七色的雲彩來娶我 我猜中了前頭,可是我猜不著這結局。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.231.104.78 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1553220548.A.CA1.html

03/22 10:24, 5年前 , 1F
把比對到的數字id用其他符號取代,然後再用正則去切
03/22 10:24, 1F

03/22 10:25, 5年前 , 2F
這是一個比較直覺的方法,您可以試看看
03/22 10:25, 2F
感謝,不過我有點想要保留ID做比對用@@ 目前我改成\d{5}(.*?)\d{5} 不過會變成隔行XD 還在嘗試當中 解決了,改用\d{5}(.*?)(?=\d{5}) 正則表達式真的好難啊XD

03/22 11:07, 5年前 , 3F
你這樣最後一段會抓不到耶
03/22 11:07, 3F
剛剛測試才發現,只能最後再補上最後一段XD ※ 編輯: silverair (36.231.104.78), 03/22/2019 11:43:14

03/22 12:32, 5年前 , 4F
我的話會先在 五個數字前面塞進空格 再去 split 簡單一點
03/22 12:32, 4F

03/22 12:33, 5年前 , 5F
re.sub(r'(\d{5})', r' \1', s).split(' ')
03/22 12:33, 5F

03/22 14:52, 5年前 , 6F
wow 樓上的方法好猛!
03/22 14:52, 6F

03/26 11:52, 5年前 , 7F
回樓樓上與原po,我剛剛試了:
03/26 11:52, 7F

03/26 11:53, 5年前 , 8F
article=‘24135critical94003soulboom75365boltblade
03/26 11:53, 8F

03/26 11:53, 5年前 , 9F
03/26 11:53, 9F

03/26 11:53, 5年前 , 10F
skill=re.compile(r’(\d{5}\D+)’)
03/26 11:53, 10F

03/26 11:53, 5年前 , 11F
skill.findall(article)
03/26 11:53, 11F

03/26 11:53, 5年前 , 12F
這樣也能建立一個以5個數字開頭的list,若有bug還請多
03/26 11:53, 12F

03/26 11:53, 5年前 , 13F
指教
03/26 11:53, 13F

03/26 12:03, 5年前 , 14F
*5個數字開頭+1個或以上的非數字結尾的組合
03/26 12:03, 14F

03/26 16:23, 5年前 , 15F
噢我找到bug了,如果出現像是flame2X之類含有數字的招
03/26 16:23, 15F

03/26 16:23, 5年前 , 16F
式,就只能比對到e,後面的數字超出\D範圍所以沒被找
03/26 16:23, 16F

03/26 16:23, 5年前 , 17F
到,這樣的確以5個數字來比對後前面加空格分割會是最
03/26 16:23, 17F

03/26 16:23, 5年前 , 18F
保險的做法
03/26 16:23, 18F

03/27 15:37, 5年前 , 19F
文章有提到"資料會有數字跟非數字"遇到數字後面會消失
03/27 15:37, 19F

03/27 15:52, 5年前 , 20F
o...沒把你說的話看完, 你自己有發現, 我上面說的情況
03/27 15:52, 20F
文章代碼(AID): #1Sb4F4oX (Python)