2015-04-02 3 views
-1

Я новичок в Python и я пишу программу, котораяPython: Как экспортировать список в текстовый файл?

  1. открывает файл
  2. Проверяет, является ли пользователь в файле
  3. Обновления записи пользователя
  4. Наконец, перезаписывает исходный файл с обновленными данными

Я боюсь с пунктом 4, где я продолжаю получать сообщение о том, что мои данные являются списком, а не строкой.

Мой текстовый файл имеет 6 запятыми столбцы: user_name следуют 6 чисел, т.е. Джос Bloggs, 1,2,3,4,5,6

Вот мой код:

fname = input('First name? ') 
fname = fname.lower() 
lname = input('Last name? ') 
lname = lname.lower() 
name = (fname + ' ' + lname) 
score=8 

with open('test.txt','r+') as df: 
    data=[] 
    for row in df: 
     data.append(row.strip().split(',')) 
#for checking 
    print(data) 
    for row in data: 
     if name == row[0]: 
     #for checking 
      print(row) 
      row[3]=row[2] 
      row[2]=row[1] 
      row[1]=score 
      second=row[2] 
      third=row[3] 
      scores = [float(score),float(second),float(third)] 
      row[5]=float(int((float(score)+float(second)+float(third))/ 0.03)/100) 
      row[4]=max(scores) 
      #for checking 
      print(row) 

    df.seek(0) 
    for row in data: 
     for item in row: 
      df.write(item + ',') 
     df.write(row +'\n') 
    df.truncate() 
    df.close() 
+1

В какой строке вы узнали об ошибке? – Tenzin

+0

Вы еще не определили 'f'. – dbliss

+0

неважно. Я вижу 'f', была опечатка. вы имели в виду 'df'. – dbliss

ответ

0

Вау, кто-то учит вас писать кобол в питоне. но, к вашему вопросу, вы зациклились на записи каждого элемента, за которым следует запятая, а затем написала всю строку. Вот тут и возникла ошибка. Попробуйте использовать функцию соединения в вашем выводе:

for row in data: 
    df.write(",".join(row) +'\n') 
+0

Это отлично подходит для упорядочивания строк (и не оставляя конечной запятой), но это не фактическая ошибка. – tdelaney

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