- eval解析適用于Python的數據類型
- 有些數據你咋眼望去以為他是json,其實不是,用json解析會報錯,但是可以用eval方法解析
s = '{"a":None,"b":[1,2,3],2:"jk"}'
eval(s)
image.png
- 正則提取文本中所有IP
import re
s = '<a>67.17.12.56sjao22&k89.121.45.200.1s<div>111.0.89.12</div>'
re.findall('\D(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\D',s)
image.png
- 正則提取文本中所有URL
- 下面這個html是淘寶主頁中的一段代碼
html = '''
<li data-closeper="" aria-label="查看更多" role="menuitem" aria-haspopup="true" data-groupid="107" class="J_Cat a-all">
<a data-cid="1" data-dataid="222880">運動</a> /
<a data-cid="1" data-dataid="222913">戶外</a> /
<a data-cid="1" data-dataid="222910">樂器</a>
</span>
<i aria-hidden="true" class="tb-ifont service-arrow"></i>
</li>
<li data-closeper="" aria-label="查看更多" role="menuitem" aria-haspopup="true" data-groupid="108" class="J_Cat a-all">
<a data-cid="1" data-dataid="222882">游戲</a> /
<a data-cid="1" data-dataid="222883">動漫</a> /
<a data-cid="1" data-dataid="222921">影視</a>
</span>
<i aria-hidden="true" class="tb-ifont service-arrow"></i>
</li>
<li data-closeper="" aria-label="查看更多" role="menuitem" aria-haspopup="true" data-groupid="109" class="J_Cat a-all">
<a data-cid="1" data-dataid="222899">美食</a> /
<a data-cid="1" data-dataid="222905">生鮮</a> /
<a data-cid="1" data-dataid="222881">零食</a>
</span>
<i aria-hidden="true" class="tb-ifont service-arrow"></i>
</li>
<li data-closeper="" aria-label="查看更多" role="menuitem" aria-haspopup="true" data-groupid="110" class="J_Cat a-all">
<a data-cid="1" data-dataid="222911">鮮花</a> /
<a data-cid="1" data-dataid="222894">寵物</a> /
<a data-cid="1" data-dataid="222920">農資</a>
</span>
<i aria-hidden="true" class="tb-ifont service-arrow"></i>
</li>
<li data-closeper="" aria-label="查看更多" role="menuitem" aria-haspopup="true" data-groupid="111" class="J_Cat a-all">
<a data-cid="1" data-dataid="222914">工具</a> /
<a data-cid="1" data-dataid="222877">裝修</a> /
<a data-cid="1" data-dataid="222919">建材</a>
</span>
<i aria-hidden="true" class="tb-ifont service-arrow"></i>
</li>
<li data-closeper="" aria-label="查看更多" role="menuitem" aria-haspopup="true" data-groupid="112" class="J_Cat a-all">
<a data-cid="1" data-dataid="222915">家具</a> /
<a data-cid="1" data-dataid="222922">家飾</a> /
<a data-cid="1" data-dataid="222884">家紡</a>
</span>'''
import re
re.findall('https?://[a-zA-Z0-9_\./\?=&%\-]+',html)
-
以下結果還是比較滿意的,因為不可能完全適配所有URL,可以自行調整參數調試,如果你會寫算法訓練當然也行。
image.png
- 正則提取文本中所有中文字符
s = 'nihao27919&阿爾法狗**【】‘’ssuajk^&*!@@#{}||請你說中文'
re.findall("[\u4e00-\u9fa5]",s)
image.png
- 正則匹配文本中非中文字符串
s = 'nihao27919&阿爾法狗**【】‘’ssuajk^&*!@@#{}||請你說中文'
re.findall("[^\u4e00-\u9fa5]",s)
image.png
- 多出“\”的unicode字符轉換
- 如果遇到
\\u4f60\\u597d\\u5417
這種字符,Python是無法直接把\\
替換為\
的。當然你也可以自己試試。
image.png
- 但是用強大的json庫就能輕松解析。
import json
s = '\\u4f60\\u597d\\u5417'
json.loads('"{}"'.format(s))
image.png