Форум сайта python.su
Исключительно ради спортивного интереса (и не смотрите на название, пожалуйста) написал небольшой скрипт на python3. Его единственное прикладное значение заключается в поиске «синонимов» к заданному слову. А именно, скрипт собирает последние (на момент запроса) 1500 сообщении из Твиттера, в которых встречается заданное слово. Затем парсит текстовую составляющую и подсчитывает количество повторении всех слов. После, в папке со скриптом создаётся одноимённый с запросом текстовый файл.dic, в который записываются результаты, соответствующие заданным требованиям (длина синонима и количество повторении).
Например, команда
$python3 dictobructo.py Путин 5 30
# ~-Open source for fun-~ # -------------------------------------- # DictoBructo by alekz.polyakov@gmail.com # http://scriptocide.blogspot.com # -------------------------------------- # #!/usr/bin/python3 # -*- coding: utf-8 -*- from twitter import * from collections import * import requests, re, string req = str(sys.argv[1]).lower() length = sys.argv[2] freq = sys.argv[3] text = [] strip = string.whitespace + string.punctuation + string.digits ###### авторизация ######### def authoriz(): OAUTH_TOKEN = "_______" #вместо прочерков OAUTH_SECRET = "_______" #вставить свои данные CONSUMER_KEY = "_______" CONSUMER_SECRET = "____" t = Twitter(auth=OAuth(OAUTH_TOKEN, OAUTH_SECRET,CONSUMER_KEY, CONSUMER_SECRET)) ###### отправка запроса, получение,парсинг ответа и запись в файл ######### def get_n_parse(): for num in range(1,16): #количество страниц, которое хотим получить от сервера (15 страниц — ограничение Твиттера) result = requests.get("http://search.twitter.com/search.json?q=%s&page=%d&rpp=100" % (req, num)) for tweet in range(0, len(result.json['results'])): text.append(str(result.json['results'][tweet]['text'])) words = re.findall('w+', str(text).lower().strip(strip)) with open(req+'.dic', 'a') as f: for key, value in dict(Counter(words)).items(): if (value >= int(freq)) and (len(key)>=int(length)) and (key != req) and (key != 'http'): f.write(str(key)+' ' +'(' + str(value) + ')n') authoriz() print('Идёт поиск синонимов для слова "',req,'" длиной ', length,' букв и которые встречаются не менее ', freq,' раз.') get_n_parse() print('Синонимы подобраны и записаны в файл ' + req +'.dic')
Отредактировано alekzp (Ноя. 15, 2012 23:19:12)
Офлайн
alekzpwords = re.findall('w+', str(text).lower().strip(strip))
str(text).lower().strip(strip)
alekzpв чём смысл приведения к str ?req = str(sys.argv[1]).lower()
Офлайн