有时候从网路上爬取到的资料型式并不是我们想要的。 ex: "新闻发布于:2020年7月1日 14点20分"。我们只想要后面的时间,并不想要前面的文字。 这时当然可以用最简单的 .s...

有时候从网路上爬取到的资料型式并不是我们想要的。https://ithelp.ithome.com.tw/images/emoticon/emoticon09.gif

ex: "新闻发布于:2020年7月1日 14点20分"。我们只想要后面的时间,并不想要前面的文字。
这时当然可以用最简单的 .split('新闻发布于:')[1],但当今天前面的文字不一样时,这个方式就不管用。

ex: 要从 "赖清德" & "赖+sexy6969" 两个帐号中去判断哪一个是色情帐号时,就必须使用到正则表达式!https://ithelp.ithome.com.tw/images/emoticon/emoticon24.gifhttps://ithelp.ithome.com.tw/images/emoticon/emoticon24.gifhttps://ithelp.ithome.com.tw/images/emoticon/emoticon24.gif

pattern

定义字串的样式

https://ithelp.ithome.com.tw/upload/images/20200701/20118435GqDD6ePYg3.png

https://ithelp.ithome.com.tw/upload/images/20200701/20118435ZX9YtD8tpb.png


re.search()

使用最为频繁、且最容易使用
用法:re.search( pattern, string )
pattern: 资料型式
string: 要比对的文字

範例1 - 只保留日期:

import retext1 = '今天的日期是:2020-07-01 14:02:48'time = re.search(r'\d+-\d+-\d+ \d+:\d+:\d+', text1).group(0)print(time)

2020-07-01 14:02:48

範例2 - 抓取中间文字:

text2 = '编辑 - 卫斯理 小编'author = re.search('编辑 - (.*?) ', text2).group(1)print(author)author = re.search('编辑 - (\w+)', text2).group(1)print(author)

卫斯理
卫斯理

範例3 - 判断色情帐号:

text1 = '赖清德'if re.search('赖([a-z|0-9])',text1):    print('色情line帐号')else:     print('正常帐号')

正常帐号

text2 = '赖sexy6969'if re.search('赖([a-z|0-9])',text2):    print('色情line帐号')else:     print('正常帐号')

色情line帐号