2013-11-25 5 views
0

При попытке сделать простое приложение для регистрации/регистрации только для личного проекта. Я пытаюсь загрузить список пользователей из файла и сравнить их с возможным именем пользователя. Если имя пользователя уже существует, программа сообщит им об ошибке.Чтение списка из файла в python 3

Вот сгущенное клон кода:

u1 = str(input("Input username: ")) 
    t = open("userlistfile","r") 
    userlist = t.readline() 
    y = 0 
    for x in range(0, len(userlist)-1): 
     if userlist[y] == u1: 
      print("\n !Error: That username (",u1,") is already taken!") 
     y += 1 

Список пользователя хранится в файле, так что он может открыться, дописывается, и сохраняется опять же, без сохранения в программе. Моя текущая проблема заключается в том, что список пользователей сохраняется как строка, а не массив. Есть лучший способ сделать это? Спасибо.


EDIT: Благодаря пользовательским Лоренсо для решения. Мои друзья рассказывают мне, чтобы я опубликовал быструю (очень простую) копию для вас, ребята, которые не могут понять это.

Новый код:

u1 = str(input("Input username: ")) 
    t = open("userlistfile","r") 
    userlist = t.read()    #Readline() changed to Read() 
    userlist = userlist.split('--') #This line is added 
    y = 0 
    for x in range(0, len(userlist)-1): 
     if userlist[y] == u1: 
      print("\n !Error: That username (",u1,") is already taken!") 
     y += 1 

Пример содержимого текстового файла:

smith123--user1234--stacky 

Эта линия отделите строку в ('-') и добавьте сепаратора обеспечивают каждый раздвоение часть в массив:

userlist = userlist.split('--') 
#Is used so that this (in the text file) 
Smith123--user1234--stacky 
#Becomes (in the program) 
userlist = ['Smith123','user1234','stacky'] 

Извините за длинный пост ... Нашел это очень интересно. Еще раз спасибо Лоренцо: D.

+1

Каков формат входного файла? Вы читаете только одну строку. –

ответ

0
userlist = t.readline() 

считывает одну строку из файла в виде строки. Итерация затем приводит символы в строку, а не слова.

Вы должны быть в состоянии получить список строк (слова) из строки с помощью метода сплита() строк или более общего re.split() функции.

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