2016-12-06 4 views
1

У меня есть текстовые файлы (только два здесь), и я хочу их прочитать на Python и манипулировать ими. Я пытаюсь сохранить списки строк (одна строка для каждого слова, по одному списку каждого файла).Не знаю, почему мой цикл python не работает

Мой код в настоящее время выглядит следующим образом: (файлы называются m1.txt и m2.txt)

dict={'m1':[],'m2':[]} 

for k in files:   
with open(k,'r') as f: 
     for line in f: 
      for word in line.split(): 
       for i in range (1,3): 
        dict['m'+str(i)].append(word) 

Этот код заканчивает объединение слов в текстовых файлов, так вместо того, чтобы дать мне слова для каждого файл отдельно. В конечном счете, я хочу прочитать много файлов, поэтому любая помощь в том, как их разделить, будет очень признательна!

+1

Что вы имеете в виду, комбинируя? Вы только объявили один словарь, поэтому, конечно, все они собираются войти в этот словарь. Вы пытаетесь создать несколько словарей, по одному для каждого файла? – user3030010

+1

также вы теоретически добавляете слова из m1.txt в 'dict ['m2']' – depperm

+4

также плохой практикой использовать встроенное слово 'dict' как переменную – MooingRawr

ответ

1

Вы каждый раз открывали каждый список при обработке каждого отдельного файла с помощью альтернативных значений i в финальном цикле.

попробовать что-то вроде этого:

dict={'m1':[],'m2':[]} 

for i, k in enumerate(files):   
    with open(k,'r') as f: 
     for line in f: 
      for word in line.split(): 
       dict['m'+str(i+1)].append(word) 

Я оставил свой код «как есть», но комментарий выше относительно не используя язык ключевых слов важно.

+0

Спасибо за помощь - я изменюсь имя моего словаря. – Dan

1

Этот пример динамически извлекает имя файла (без расширения) и использует его для обозначения, где в Словаре мы работаем:

files = ['m1.txt', 'm2.txt']; 
file_store = {'m1':[],'m2':[]} 

for file in files: 
    prefix = (file.split(r'.'))[0] 
    with open(file, 'r') as f: 
     for line in f: 
      for word in line.split(): 
       file_store[prefix].append(word) 
Смежные вопросы