Ничего не надо делать. data уже Юникодные строчки с русским текстом содержит.
#!/use/bin/env python2
import json
from urllib2 import urlopen
data = json.load(urlopen(url))
print data['text']
Наиболее вероятной причиной, по которой вы видите \u0440 вместо р в Питоне 2, является печать контейнера вместо строки. К примеру если type(data['text']) == list:
>>> print [u'\u0440']
[u'\u0440']
>>> print repr(u'\u0440')
u'\u0440'
>>> print [u'\u0440'][0]
р
>>> print u'\u0440'
р
Связано:
Если type(data['text']) является unicode, но вы всё равно видите \u0413\u0440 на экране вместо Гр, то либо данные неверно генерируются (посмотрите на print repr(urlopen(url).read())—не должны \\u видеть, правильно только один слэш, а не два), либо печать Unicode в вашем окружении так сконфигурирована (проверьте значение PYTHONIOENCODING переменной окружения—ascii:backslashreplace может Г в \u0413 превратить). Вот примеры ввода/вывода Unicode в Питоне 2.
О \u в json cм. ещё ответ на связанный вопрос: Json ответ в "неправильной кодировке" отображает русские символы.
\u экранирование используется для представления Unicode символов как в JSON формате так и в текстовом представлении unicode строк в Питоне.