2014-11-09 3 views
0

Если у меня есть файл (users.txt) со следующей информацией: отформатированныйSplit Python функция не работает, как ожидалось

x y z(t) 

x y z(t) 

Как я могу написать функцию питона, который читает в файле (users.txt) и использует функцию split разбить каждую строку файла в трех переменных:

who для x
where для y
when_and_time для z(t)

и print s к экрану, так что формат является who on where at when_and_time или с переменными x on y at z(t)

То, что я до сих пор:

user_info = open("~/users.txt").read() 
for line in user_info: 
    positions = line.split(',') 
    who = positions[0] 
    where = positions[1] 
    when_and_time = positions[2] 
    print(who + " on " + where + " at " + when_and_time) # I press enter at this point 

Это дает мне подсказку для большего количества команд, в в какой точке я снова нажимаю кнопку ввода и получаю следующее:

Traceback (most recent call last): 
    File "<stdin>", line 4, in <module> 
IndexError: list index out of range 

Что я делаю неправильно?

+0

вы можете проверить, напечатав 'positions' список и посмотреть, сколько элементов у вас есть. И разделяется ли оно ','? – badc0re

+1

'read' будет читать весь файл как строку. если вы хотите, чтобы строка за строкой использовала 'readlines', она выдаст вам строки – Hackaholic

+0

@Hackaholic Это работало вместе с ответом porglezomp !! Спасибо!!! – movietime

ответ

3

Проблема заключается в том, что вы делаете split(","), что приведет к разделению строки на символы запятой. Поскольку вы, кажется, отформатировали свою строку с пробелами, она не разбивает ее нигде, поэтому вы получаете только один элемент в своем списке. Вероятно, вы хотите использовать split() без аргументов для разделения на любые пробелы.

1

если вы читаете строку за строкой будет лучше, то вы можете разделить на пространствах:

f=open('your_file') 
for x in f: 
    x=x.split() # now here x contain all variables that are separated by space 
    # do your stuff with x 
Смежные вопросы