作者silverair (那真是太諷刺了紹安)
看板Python
標題[問題] 正則表達分割字串
時間Fri Mar 22 10:09:04 2019
小弟我最近碰到一個問題
爬蟲爬出來的資料很亂
沒有分行符,所以會變成一個字串是"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
→ Luluemiko: 把比對到的數字id用其他符號取代,然後再用正則去切 03/22 10:24
→ Luluemiko: 這是一個比較直覺的方法,您可以試看看 03/22 10:25
感謝,不過我有點想要保留ID做比對用@@
目前我改成\d{5}(.*?)\d{5}
不過會變成隔行XD
還在嘗試當中
解決了,改用\d{5}(.*?)(?=\d{5})
正則表達式真的好難啊XD
推 wsybu: 你這樣最後一段會抓不到耶 03/22 11:07
剛剛測試才發現,只能最後再補上最後一段XD
※ 編輯: silverair (36.231.104.78), 03/22/2019 11:43:14
→ wxyy: 我的話會先在 五個數字前面塞進空格 再去 split 簡單一點 03/22 12:32
→ wxyy: re.sub(r'(\d{5})', r' \1', s).split(' ') 03/22 12:33
推 HenryLiKing: wow 樓上的方法好猛! 03/22 14:52
推 moodoa3583: 回樓樓上與原po,我剛剛試了: 03/26 11:52
→ moodoa3583: article=‘24135critical94003soulboom75365boltblade 03/26 11:53
→ moodoa3583: ’ 03/26 11:53
→ moodoa3583: skill=re.compile(r’(\d{5}\D+)’) 03/26 11:53
→ moodoa3583: skill.findall(article) 03/26 11:53
→ moodoa3583: 這樣也能建立一個以5個數字開頭的list,若有bug還請多 03/26 11:53
→ moodoa3583: 指教 03/26 11:53
推 moodoa3583: *5個數字開頭+1個或以上的非數字結尾的組合 03/26 12:03
推 moodoa3583: 噢我找到bug了,如果出現像是flame2X之類含有數字的招 03/26 16:23
→ moodoa3583: 式,就只能比對到e,後面的數字超出\D範圍所以沒被找 03/26 16:23
→ moodoa3583: 到,這樣的確以5個數字來比對後前面加空格分割會是最 03/26 16:23
→ moodoa3583: 保險的做法 03/26 16:23
推 wxyy: 文章有提到"資料會有數字跟非數字"遇到數字後面會消失 03/27 15:37
→ wxyy: o...沒把你說的話看完, 你自己有發現, 我上面說的情況 03/27 15:52