2017-05-21 58 views
0

目前我正在試圖從一個網頁湊一些數據。我需要的數據在html源代碼的<meta>標籤內。刮擦數據並使用BeautifulSoup將其保存爲字符串是沒有問題的。如何使用Python中的正則表達式從相同的字符串中提取多個值?

字符串中包含2個數字我想提取。每個數字(1-100分的評分)都應該分配給一個獨立的變量進行進一步處理。

test_str = "<meta content=\"Overall Rating: 79/100 ... Some Info ... Score: 86/100 \"/>" 

第一個值是79/100,第二個是86/100,但我只需要7986。到目前爲止,我創建了一個正則表達式搜索來找到這些值,然後.replace("/100")來清理。

但是我的代碼,我只得到了第一個正則表達式搜索匹配,這是79值。我嘗試使用m.group(1)獲得第二個值,但它不起作用。

我錯過了什麼?

test_str = "<meta content=\"Overall Rating: 79/100 ... Some Info ... Score: 86/100 \"/>" 

m = re.search("../100", test_str) 
if m: 
    found = m.group(0).replace("/100","") 
    print found 

    # output -> 79 

感謝您的幫助。

此致敬禮!

+0

變得不必要

例' re.findall'返回匹配 – Ludisposed

+0

你刮網頁的數組,然後把整個HTML源代碼,並應用正則表達式來呢?我問,因爲你的代碼示例沒有顯示與美名相關的代碼。 – Tomalak

+1

謝謝! @Tomalak不,我只是保存在使用\t'meta_description = soup.find(「元」,{「名」:「評級數據」})的字符串的數據'。我只是沒有包含BeautifulSoup的部分來保持簡單。 –

回答

0
test_str = "<meta content=\"Overall Rating: 79/100 ... Some Info ... Score: 86/100 \"/>"  
m = re.findall('(\d+(?=\/100))', test_str) 
# m = ['79', '86'] 

我改變../d+所以可以搜索是1位或2

我也使用正先行(?=...),所以.replaceRegex101

+0

很好,謝謝! –

+0

Np很高興我可以幫助:) – Ludisposed

相關問題