2017-02-16 14 views
0

Im просто пытаемся сделать базу данных, сделав список списков, где каждый элемент D представляет собой список номеров разделить с помощью line.splitкосяк списка Добавлять в список питона

D = [] 

f1 = open("test.txt",'r') 
for line in f1: 
    trans = line.split() 
    D.append[trans] 

это то, что в test.txt

12 34 34 324 32432 4 
23 432 43 557 56 8 
124 234 64 457 56 

, когда я пытаюсь это я получаю обратно эту ошибку

Traceback (most recent call last): 
    File "practice.py", line 6, in <module> 
    D.append[trans] 
TypeError: 'builtin_function_or_method' object has no attribute '__getitem__' 

Может кто-нибудь объяснить, что я делаю ж Ронг и как правильно подойти к этому?

+1

Что вы делаете с квадратными скобками в 'D.append [trans]' ..? – Li357

+0

Для чего это стоит, я не совсем уверен, что это простая «опечатка». OP кажется новым для Python, и нетрудно путать насчет разницы между «[]» и «()» – user1245262

ответ

5

Try:

D.append(trans) 

Это вызывает метод append объекта списка D. Когда вы делаете D.append[...], вы пытаетесь индексировать атрибут append. Но этот атрибут является функцией/методом, поэтому вы не можете индексировать его.

+0

, как я пропустил это ..... wow ....... –

+0

@JoseMedina: все в порядке, мы все были новичками в одно время :) Сообщение об ошибке Python здесь может быть лучше, чтобы быть справедливым. Это не очень удобно для новичков. –

1

Попробуйте

D = [] 

f1 = open("test.txt",'r') 
for line in f1.getlines(): 
    trans = line.split() 
    D.append(trans) # with() instead of [] since this is a function call and not an index 

Можно также сказать,

for line in f1: 
    print f1 

, чтобы увидеть, что f1 на самом деле.

2

использование:

D = [] 

f1 = open("test.txt",'r') 
for line in f1: 
    trans = line.split() 
    D.append(trans) 
0

Ваша проблема здесь:

D.append[trans] 

Это пытается присвоить атрибут транс атрибуту присоединять который является методом. Вы хотите

D.append(trans) 
+0

* Это попытка присвоить атрибут trans атрибуту append, который является методом * - что ...? Ничто не назначается ... – Li357