Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.144.94.187] |
|
Сообщ.
#1
,
|
|
|
По теме Стоп-слова я получил список слов разной длинны. Но мне нужны только 3-4 буквенные, поэтому решил на питоне сделать скрипт который отделит каку и оставит нужное
Вопрос, насколько скрипт выглядит плохо для питоновского? #!/usr/bin/env python def check_word(line): if (len(line) >= 2): for ch in line: if (ch < 'A' or ch > 'Z'): return 0 else: return 0 return 1 words = [] all_words = 0 file = open('in-stop.txt', 'r') for line in file.readlines(): all_words += 1 line = line.lstrip()[0:4].rstrip().upper() if (check_word(line)): try: words.index(line) except: words.append(line) file.close() print "All proccess words %d" % all_words f = {} count_words = {} for i in [2, 3, 4]: f[i] = open('out-words' + str(i) + '.txt', 'w') count_words[i] = 0 for wrd in sorted(words): f[len(wrd)].write(wrd + "\n") count_words[len(wrd)] += 1 for i in count_words.keys(): print "%d letter words %d" % (i, count_words[i]) f[i].close() |
Сообщ.
#2
,
|
|
|
хм, если скрипт будет выполняться только один раз, то какая разница как он будет выглядеть?
|
Сообщ.
#3
,
|
|
|
Цитата orb @ Но мне нужны только 3-4 буквенные >>> a=['qqq','wwww','eeeee'] >>> filter(lambda x: 2 < len(x) < 5, a) ['qqq', 'wwww'] >>> |
Сообщ.
#4
,
|
|
|
Цитата orb @ def check_word(line): if (len(line) >= 2): for ch in line: if (ch < 'A' or ch > 'Z'): return 0 else: return 0 return 1 Это невыразимо. 1) True/False 2) string.uppercase => def check_word(word): return len(word) >= 0 and all(c not in string.uppercase for c in word) Цитата orb @ try: words.index(line) except: words.append(line) if line not in words: words.append(line) Алсо возможно будет еще проще добавлять все слова, а потом просто применить list(set(words)) |