2016-04-22 60 views
-2

對我怎麼能分裂任何想法(想獲得的東西平均)python我將如何分解這個?

import re 
print(sum(float(re.sub(r"[^\d.]", "", post.text)) for post in posts)) 
+0

'sum(*)/ len(posts)' – Pythonista

+0

@ Nevermind123 - 您選擇的答案中的邏輯是什麼?它的發佈時間比我的晚,並且不太正確,因爲它沒有解決OP中的「posts」數據結構,而是創建了自己的數據結構。我從17分鐘前的回答將無需更改您的代碼即可工作。 –

回答

0

這對我的作品。

import re 

posts = ['1test', '23test', '15test'] 

r = re.compile('(^\d)') 
print sum([float(r.match(post).group(1)) for post in posts])/len(posts) 
+0

如果字符串中的數字都是正整數,那麼我的答案可以正常工作,但除此之外,您應該使用更一般的正則表達式,例如JRazor給出的正則表達式。有關文本字符串中數字格式的更多細節將會很好。 – kaisquared

0

像這樣:

import re 
print(sum(float(re.sub(r"[^\d.]", "", post.text)) for post in posts)/len(posts)) 
0

使用搜索,而不是取代。你可以找到像r"\b\d+\.\d+\b"這樣的浮動。如果你想找到的所有號碼(不僅是浮動),用r"\b\d+\.*\d*\b"

import re 

values = map(float, re.findall(r"\b\d+\.\d+\b", your_string)) 
average = sum(values)/len(values) 

print average