1. python 正则表达式总结
1.1 字符串替换
- 去除字符串中所有\u开头数字或字母结尾的字符?
import re
s = r"\ue627\uf893e古力娜扎超话娜扎的最新海岛度假照,这白到发光的皮肤真是让人羡慕。肤白如雪,就是形容这样的小姐姐的?,"
s1 = re.sub(r"\\u.*[a-zA-Z0-9]", "", s)
print(s1)
- 去除字符串中的?#~????等字符和\u开头字母或数字结尾的字符,保留逗号句号等分隔符
import re
s = r"\ue627\uf893e古力娜扎?#~超话娜扎的最新海岛度假照,这白到发光的皮肤真是让人羡慕。肤白如雪,??就是形容这样的??小姐姐的?,"
# 先去除字符串中的\u开始字母或数字结尾的字符,再在这个字符中找到所有的单词和分隔符,将分隔符用空字符连接起来。
s1 = "".join(re.findall("[\w,.,;;。?]", re.sub(r"\\u.*[a-zA-Z0-9]", "", s)))
print(s1)
- 获取div中的所有文本,除去div中的所有标签,但是保留标签中的内容,例如a标签中的内容,并且去除html中的 ;
import re
s = """
<div class="c-abstract">
<span class=" newTimeFactor_before_abs m">2018年11月6日 - </span>
<em>Python注释</em>基础 要用<em>Python</em>编写<em>注释</em>,只需将“#”放在您的<em>注释</em>内容之前: <em>Python</em>会忽略在#标记之后到<em>行尾</em>的所有内容,您可以在<em>代码</em>中的任何位置插入它们,...</div>
"""
s1 = "".join(re.findall("[\w,.;?,。?;]", re.sub(r"<.*?>| ", "", s, re.M), re.M))
print(s1)
- 提取字符串中的a标签的文本及href,去除title中的特殊字符
import re
div = """
<div class="WB_text W_f14" node-type="feed_list_content">
<a suda-uatrack="key=tblog_card&value=click_title:4400799742323026:1022-topic:1022%3A10080898347e56cba69497dec5d9bab5a9fc11" title="哈士奇超话" href="http://huati.weibo.com/31436" alt="http://huati.weibo.com/31436" action-type="feed_list_url" target="_blank" rel="noopener noreferrer"><i class="W_ficon ficon_supertopic"></i>哈士奇超话</a><a target="_blank" render="ext" suda-uatrack="key=topic_click&value=click_topic" class="a_topic" extra-data="type=topic" href="//s.weibo.com/weibo?q=%23%E9%93%B2%E5%B1%8E%E5%AE%98%E7%9A%84%E8%87%AA%E6%88%91%E4%BF%AE%E5%85%BB%23&from=default">#铲屎官的自我修养#</a>二哈:我腿卡住了,快来救救我! <a suda-uatrack="key=tblog_card&value=click_title:4400799742323026:1034-video:1034%3A4400671144010834:home:6042105162:4400799742323026:6042105162" title="二哈哈哈哈呵的微博视频" href="http://t.cn/AiYxlN1G" alt="http://t.cn/AiYxlN1G" action-type="feed_list_url" target="_blank" rel="noopener noreferrer"><i class="W_ficon ficon_cd_video">L</i>二哈哈哈哈呵的微博视频</a> </div>
"""
# 获取所有的a标签
a_list = re.findall("<a.*?>.*?</a>", div, re.M)
# 定义数据列表
url_list = list()
for a in a_list:
# 去除title中的特殊字符
title = "".join(re.findall("[\w,.;?,。?;]", re.sub(r"<.*?>| ", "", a, re.M), re.M))
# 提取a标签中的 href属性
href = re.findall('<a.*?href="(.*?)".*?>', a, re.M)[0]
# 将数据以字典形式保存,并将数据加入数据列表中
url_list.append({"title": title, "href": href})
print(url_list)