2016-12-09 2 views
-1

Я прочитал много файлов txt в списке. Это мой кодPython: Чтение файла txt в списках

import glob 
path = '/Users/xccxken/Desktop/NNRelease/paperVersion/*.txt' 
files = glob.glob(path) 
for name in files: 
    with open(name) as f: 
     for line in f: 
      split = line.split() 
      if split and all('#' not in i for i in split): 
       r = split 
a = [] 
b = [] 
for line in r: 
    a.append(r[0]) 
    b.append(r[1]) 

и выход, как этот

['water', 'water'] 
['shortage', 'shortage'] 

и мой предполагаемый выход два списка а и б, как это:

a = [class, company,...,XXXX] 
b = [size, size,..., YYYY] 

Каждый текстовый файл выглядит следующим образом :

enter image description here

Пожалуйста, помогите мне исправить код

+0

Тогда вы, вероятно, следует создать два списка и добавить детали к ним, как вы идете вперед. У вас есть вопрос? – jonrsharpe

+1

Затем задайте вопрос, чтобы дать [mcve], который * на самом деле иллюстрирует проблему *. SO здесь не для того, чтобы написать это для вас. – jonrsharpe

+0

Ваш код не имеет смысла. Вы обрабатываете только последнюю строку во втором цикле. Вы четко знаете, что 'r' содержит два элемента, поскольку вы индексируете его' r [0] 'и' r [1] ', и все же вы также перебираете его и игнорируете переменную цикла' line', а затем каким-то образом удивлен, когда вы получаете эти два предмета дважды. Пожалуйста, подумайте об этом более тщательно. Попробуйте воспользоваться http://pythontutor.com/, чтобы помочь вам, и следуйте советам в разделе «Как отлаживать небольшие программы» (https://ericlippert.com/2014/03/05/how-to-debug-small- программы /). – jonrsharpe

ответ

0
a = [] 
b = [] 
for name in files: 
    with open(name) as f: 
     for line in f: 
      split = line.split() 
      if split and all('#' not in i for i in split): 
       a.append(split[0]) 
       b.append(split[1]) 

print(a) # prints ['class', 'company', 'family', 'sandwich'] 
print(b) # prints ['size', 'size', 'size', 'size'] 
+0

Почему ответ занижен? –

+0

Прошу прощения. Я не проголосовал за ваш ответ, на самом деле я проголосовал за вас, однако у меня репутация менее 15, поэтому я не имею права делать это сейчас. – kkjoe

+0

Я ценю вашу работу, это очень помогает. Большое спасибо за ваше время – kkjoe

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