作者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://webptt.com/cn.aspx?n=bbs/Python/M.1553220548.A.CA1.html
1F:→ Luluemiko: 把比对到的数字id用其他符号取代,然後再用正则去切 03/22 10:24
2F:→ Luluemiko: 这是一个比较直觉的方法,您可以试看看 03/22 10:25
感谢,不过我有点想要保留ID做比对用@@
目前我改成\d{5}(.*?)\d{5}
不过会变成隔行XD
还在尝试当中
解决了,改用\d{5}(.*?)(?=\d{5})
正则表达式真的好难啊XD
3F:推 wsybu: 你这样最後一段会抓不到耶 03/22 11:07
刚刚测试才发现,只能最後再补上最後一段XD
※ 编辑: silverair (36.231.104.78), 03/22/2019 11:43:14
4F:→ wxyy: 我的话会先在 五个数字前面塞进空格 再去 split 简单一点 03/22 12:32
5F:→ wxyy: re.sub(r'(\d{5})', r' \1', s).split(' ') 03/22 12:33
6F:推 HenryLiKing: wow 楼上的方法好猛! 03/22 14:52
7F:推 moodoa3583: 回楼楼上与原po,我刚刚试了: 03/26 11:52
8F:→ moodoa3583: article=‘24135critical94003soulboom75365boltblade 03/26 11:53
9F:→ moodoa3583: ’ 03/26 11:53
10F:→ moodoa3583: skill=re.compile(r’(\d{5}\D+)’) 03/26 11:53
11F:→ moodoa3583: skill.findall(article) 03/26 11:53
12F:→ moodoa3583: 这样也能建立一个以5个数字开头的list,若有bug还请多 03/26 11:53
13F:→ moodoa3583: 指教 03/26 11:53
14F:推 moodoa3583: *5个数字开头+1个或以上的非数字结尾的组合 03/26 12:03
15F:推 moodoa3583: 噢我找到bug了,如果出现像是flame2X之类含有数字的招 03/26 16:23
16F:→ moodoa3583: 式,就只能比对到e,後面的数字超出\D范围所以没被找 03/26 16:23
17F:→ moodoa3583: 到,这样的确以5个数字来比对後前面加空格分割会是最 03/26 16:23
18F:→ moodoa3583: 保险的做法 03/26 16:23
19F:推 wxyy: 文章有提到"资料会有数字跟非数字"遇到数字後面会消失 03/27 15:37
20F:→ wxyy: o...没把你说的话看完, 你自己有发现, 我上面说的情况 03/27 15:52