最近在提取新聞事件的發生時間,現在只是實現了乙個最簡單的新聞,獲取新聞報到時間和正文的時間。
方案:把正文中出現的第乙個時間作為事情的發生時間,並按照統一的格式進行輸出***x-xx-xx 某年某月某日這種格式。
在新聞中,由於每乙個**發布方不同,會存在報到時間不一致,以及正文內容格式不一致,在這個時候,我們需要考慮各種情況,但在此處,我們考慮的較簡單,後面會在繼續優化這個格式的提取。
p = re.compile(r'\d年\d月\d日|今天|\d月\d日|\d[-|/|.]\d[-|/|.]\d')
本人定義了上述正規表示式,使用上面的正規表示式,可以把這個新聞當中常見的日期格式給提取出來以及常見的月日表達給提取出來,由於本人,爬蟲抓取的新聞內容是按照標題,報道,**,正文內容,一般情況下,獲取的第乙個時間位報道時間,隨後跟的時間是正文內容時間,會返回乙個字串形式的鍊錶。
中間有對格式的轉化,還有一些10月份以下操作補0,得到統一的位數輸出,但是還沒有對天數處理,完善之後會拿出來和大家分享
import re
#f = open(r'e:\news.txt','r',encoding = 'utf-8')
for readline in f:
print(readline)
p = re.compile(r'\d年\d月\d日|今天|\d月\d日|\d[-|/|.]\d[-|/|.]\d')
p1 = re.compile(r'\d月\d日')
result = re.findall(p,readline)
print(result)
try:
title_time = result[0].replace('年','-').replace('月','-').replace('日','').replace('號','')
print(title_time)
'''if result[1] == '今天':
return result[0]
'''''' ti = re.compile(r'截至.*\d月\d日')過濾掉包含截至,到,至這種格式,不是發生時間
'''if result[1] == '今天':
cur_time = title_time
print(cur_time)
else:
cur_time = result[1].replace('年','-').replace('月','-').replace('日','').replace('號','')
if int(cur_time.split('-')[0]) < 10 :
cur_time = '0' + cur_time
print(title_time[:5] + cur_time)
except exception as e:
print(e)
返回結果
['2023年11月03日', '今天', '11月2日', '10月31日']
2016-11-03
2016-11-03
從上面結果輸出,我們的方案可以正確執行,輸入統一格式的日期,在一定概率下,也獲取了正確的新聞事件的發生日期,可以儲存為格式化的資料,進行入庫儲存起來
正規表示式提取時間
時間的各種格式都可以通過正規表示式來匹配,例如我們想精確匹配hh mm的時間,即包含小時和分鐘,可以使用下面的表示式 0 9 0 0 9 1 0 9 2 0 3 0 5 0 9 0 9 0 0 9 1 0 9 2 0 3 0 5 0 9 更多關於時間和日期的正規表示式,參考 regexlib.pub...
jmeter 正規表示式提取
我們在做壓測時,經常會碰到需要上個介面的結果作為引數傳遞到下乙個介面,此時需要用到正規表示式提取功能。1 新增jmeter正規表示式提取器 在具體的request下新增jmeter正規表示式提取器 jmeter正規表示式在 後置處理器 下面 例1如下 引用名稱 tokenid 自己定義 模板 1 匹...
jmeter正規表示式提取器裡正規表示式語法簡介
jmeter裡介面請求結束後,如果後續介面請求想要獲取本次返回結果的內容,就需要正規表示式提取器來獲取引數,當然也可以用json path extractor來提取 這個簡單一些 不過jmeter裡很多地方的約束條件和斷言都是需要正規表示式來匹配的,所以大家還是要學習一下正規表示式的語法,以便更好更...