2013-09-15 2 views
-1

Я так старался сортировать этот код в алфавитном порядке, но все еще не работает. тис это сообщение об ошибке:как отсортировать этот код на питоне в алфавитном порядке

Traceback (самый последний вызов последнего): Файл "D: \ Eclipse, Workspace \ tugas1 \ SRC \ h.py", строка 15, в за слово в наборе (л): TypeError: объект '' NoneType не итерацию

здесь код:

from re import compile 

l=compile("(\w[\w']*)").findall(open(raw_input('Input file: '),'r').read().lower()).sort() 

f=open(raw_input('Output file: '),'w') 

for word in set(l): 

    print>>f, word, ':', '\t', l.count(word), 'kata' 

f.close() 
+3

* Рельеф лучше плотного * – TerryA

+0

Ну, кто знает, он мог бы следовать «Плоский лучше, чем вложенный». :) – Shashank

+0

@Shashank Еще несколько строк не делают код вложенным. – Voo

ответ

1

.sort() сортирует список на месте. Он не возвращает отсортированный список. Поскольку это не так, по умолчанию возвращается None.

Таким образом, l = None. Вы не хотите этого.

Ваш код должен быть:

from re import compile 
l = compile("(\w[\w']*)") 
with open(raw_input('Input file: '),'r') as myfile: 
    content = myfile.read().lower() 
    l = l.findall(content) 
    l.sort() # Notice how we don't assign it to anything 

... 

разреженных лучше, чем густой. Не пытайтесь поставить все в одну строку

+0

извините, им новый в питоне. не могли бы вы починить мой код? thx – vynz5

+0

@ vynz5 Не просмотрев содержимое файла, который вы пытаетесь прочитать – TerryA

+0

@ vynz5 Я отредактировал свой ответ – TerryA

2

Проблема .sort(). Он сортирует список на месте и возвращает None, так что это результат назначения. l всегда None.. Сделайте сортировку отдельно, после всего остального.

l=compile("(\w[\w']*)").findall(open(raw_input('Input file: '),'r').read().lower()) 
l.sort() 

Просто BTW, нет необходимости компилировать регулярное выражение, если вы собираетесь использовать его один раз. Однако вреда при этом.

+0

О, черт, как я пропустил это ... – TerryA

+0

@kindall oke, теперь нет ошибки , но слово по-прежнему не сортировано по алфавиту. вы не возражаете, почему? – vynz5

+0

Ну, вы преобразовываете его в 'set', который не поддерживает порядок после сортировки. Может быть, вы хотите сделать это наоборот? – kindall

Смежные вопросы