2016-04-22 53 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