любые идеи о том, как я мог бы разделить это (пытается получить в среднем что-то)python Как бы я разделил это?
import re
print(sum(float(re.sub(r"[^\d.]", "", post.text)) for post in posts))
любые идеи о том, как я мог бы разделить это (пытается получить в среднем что-то)python Как бы я разделил это?
import re
print(sum(float(re.sub(r"[^\d.]", "", post.text)) for post in posts))
Это работает для меня.
import re
posts = ['1test', '23test', '15test']
r = re.compile('(^\d)')
print sum([float(r.match(post).group(1)) for post in posts])/len(posts)
Если числа в ваших строках все будут положительными целыми числами, тогда мой ответ будет работать нормально, но в противном случае вы должны использовать более общее регулярное выражение, такое как JRazor. Было бы немного более подробно о формате чисел в вашей текстовой строке. – kaisquared
Как это:
import re
print(sum(float(re.sub(r"[^\d.]", "", post.text)) for post in posts)/len(posts))
Используйте поиск, а не замены. Вы можете найти float как 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
'сумма (*)/LEN (сообщений)' – Pythonista
@ Nevermind123 - что логика в ответ вы выбрали? Он был опубликован позже, чем мой, и является менее правильным, поскольку он не затрагивает структуру данных 'posts' в OP, а создает собственную структуру данных. Мой ответ за 17 минут будет работать, не требуя от вас изменения кода. –