2014-08-21 2 views
1

Я не знаю, является ли вопрос немного странным или нет, но я работаю над скриптом, который подсчитывает количество строк (заменяет слова и дубликаты) в все текстовые файлы в заданном каталоге.Есть ли способ убрать словарь при его печати

Затем он помещает результаты в словарь с файлом, являющимся ключом, и числом строк, являющимся значением. Я хотел бы напечатать словарь как это:

file name: number of lines 
file name2: number of lines2 

вместо:

{'file directory':'number of lines','file directory2':'number of lines2'} 

Кроме того, есть ли способ, чтобы удалить повторяющееся начало каталога и оставить только с именем файла?

+1

Вы должны держать свои вопросы в одной проблеме одновременно; часть «повторного начала» - это другой вопрос. –

+0

@MartijnPieters Этот вопрос представляется мне главным вопросом форматирования, и вещь «повторяющегося начала» (несмотря на то, что она является проблемой строкового разбора с точки зрения реализации) является частью форматирования. –

+0

@KyleStrand Да, это все, что нужно сделать с тем же словарем, поэтому я подумал, что это будет актуально – Sebastian

ответ

6

петля Просто над словарем и распечатать содержимое затем:

for path, num in dictionary.iteritems(): 
    filename = os.path.basename(path) 
    print '{}: {}'.format(filename, num) 

Если вы используете Python 3, используйте dictionary.items() и print() как функции, а не как утверждение.

Используйте os.path.basename() для извлечения базового имени файла с пути.

+0

+1 Я думаю, что он не хочет печатать «файл» части ключа, возможно, должен переключить 'filename' на' filename.split() [1:] 'или что-то вроде этого – alfasin

+1

@alfasin: есть там есть два отдельных вопроса. 1) как печатать содержимое словаря по-разному и 2) как получить базовое имя из пути. Для последнего вы используете 'os.path.basename()', а не 'filename.split() [1]'. –

+1

@MartijnPieters Я думал, что это часть того же вопроса, потому что это все модификации одного и того же словаря – Sebastian

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