sed -e 's/<p/\& lt;p/g' -e 's/<\/p/\& lt;\/p/g' file.xml > new.xml
grep -o '<[^>]*>' file.xml | cut -f 1 -d ' ' | sort | uniq -c
import random
import bisect
# наш список
l = list(range(12,50))
# задаем веса, например: вес=70-позиция, можно любой
lw = [(i, 70-i) for i in l]
# суммируем веса
tw = 0
wd = dict()
for i, w in lw:
tw += w
wd[tw] = i
wk = sorted(wd.keys())
# получаем наше значение
value = wd[wk[(bisect.bisect_right(wk, random.random()*tw))]]