Я пытаюсь определить наиболее распространенные слова или «термины» (я думаю), поскольку я перебираю много разных файлов.Как я могу эффективно вывести человеческие читаемые строки/термины из кода автоматически?
Пример - Для этой строки кода, найденного в файле:
for w in sorted(strings, key=strings.get, reverse=True):
Я хочу, чтобы эти уникальные строки/термины вернулся в словарь в качестве ключей:
for
w
in
sorted
strings
key
strings
get
reverse
True
Однако, я хочу этот код можно настраивать, чтобы я мог возвращать строки с периодами или другими символами между ними, потому что я просто не знаю, что имеет смысл, пока я не запустил сценарий и не подсчитал «термины» несколько раз:
strings.get
Как я могу подойти к этой проблеме? Это помогло бы понять, как я могу сделать эту одну строку за раз, чтобы я мог ее зацикливать, когда я читал строки моего файла. У меня есть основная логика, но сейчас я просто делаю подсчет по уникальной строке вместо «термин»:
strings = dict()
fname = '/tmp/bigfile.txt'
with open(fname, "r") as f:
for line in f:
if line in strings:
strings[line] += 1
else:
strings[line] = 1
for w in sorted(strings, key=strings.get, reverse=True):
print str(w).rstrip() + " : " + str(strings[w])
(Да я использовал код из моего небольшого фрагмента кода здесь в качестве примера в верхней части.)
Спасибо. Теперь, если я хотел что-то вроде 'hello $ world' ($ ... некоторые из файлов не являются фактическим кодом btw), чтобы соответствовать как полный термин (вместо' hello' и 'underscore')? Я собираюсь настроить это много. Мне просто нужно начать создавать кучу регулярных выражений «правила»? – Thisisstackoverflow
, дающий конкретные примеры шаблонов, довольно прост, обобщение шаблона на несколько вариантов может быть затруднено, особенно если вы не очень хорошо знакомы с 're'. Я знаю, что обычно я получаю базовый шаблон с помощью re, затем использую методы 'str' для удаления исключений. –