На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
Дорогие друзья! Поздравляем вас с днём Победы!
msm.ru
Модераторы: RaD
  
    > насколько плохой код
      По теме Стоп-слова я получил список слов разной длинны. Но мне нужны только 3-4 буквенные, поэтому решил на питоне сделать скрипт который отделит каку и оставит нужное :)

      Вопрос, насколько скрипт выглядит плохо для питоновского?
      ExpandedWrap disabled
        #!/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()
        хм, если скрипт будет выполняться только один раз, то какая разница как он будет выглядеть? :huh:
          Цитата orb @
          Но мне нужны только 3-4 буквенные

          ExpandedWrap disabled
            >>> a=['qqq','wwww','eeeee']
            >>> filter(lambda x: 2 < len(x) < 5, a)
            ['qqq', 'wwww']
            >>>
            Цитата 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
            =>

            ExpandedWrap disabled
              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))
            1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script execution time: 0,0261 ]   [ 14 queries used ]   [ Generated: 12.05.24, 16:47 GMT ]