Основной вопрос цикла Python - проблема чтения списка из текстового файла - PullRequest
0 голосов
/ 09 ноября 2009

Я пытаюсь прочитать список элементов из текстового файла и отформатировать его в квадратных скобках и разделителях следующим образом: ['item1', 'item2', .... 'last_item'], но у меня возникли проблемы с начальным и конечным элементом, для которого я всегда получаю: ..., 'last_item', '], поэтому я не хочу, чтобы последний "был там.

В питоне я написал:

out_list = "['"
for line in open(file_in):  
    out_list += line                #append the item to the list
    out_accession_list += "','"     #add the separator
out_accession_list += "]"           #add the final closed bracket
return out_list                        

Я понимаю, что это основной вопрос цикла, но я не могу придумать лучший способ сделать это. Должен ли я использовать оператор try final, должен ли это быть цикл while, или я должен сначала посчитать количество строк, а затем использовать цикл с диапазоном?

Помощь очень ценится.

Спасибо, John

Ответы [ 6 ]

4 голосов
/ 09 ноября 2009

Прочитайте все свои строки и используйте метод string.join(), чтобы соединить их вместе.

lines = open(file_in).readlines()

out_list = "['" + "','".join(lines) + "']"

Кроме того, join() может принимать любую последовательность, поэтому чтение строк не требуется. Приведенный выше код может быть упрощен как:

out_list = "['" + "','".join(open(file_in)) + "']"
1 голос
/ 09 ноября 2009
out_list = []
for line in open(file_in):
    out_list.append("'" + line + "'")
return "[" + ",".join(out_list) + "]"
0 голосов
/ 09 ноября 2009
def do(filepath):
    out = []
    for line in open(filepath, 'r'):
        out.append("'" + line.strip() + "'")
    return out.__str__()
0 голосов
/ 09 ноября 2009

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

>>> repr([line.rstrip() for line in open(file_in)])
"['item1', 'item2', 'item3']"
0 голосов
/ 09 ноября 2009

Или

result = "['"
for line in open(file_in):
    if len(result) > 0:
        result += "','" 
    result += line
result += "']"
return result
0 голосов
/ 09 ноября 2009

Вы "правую полосу" для "," результат перед добавлением последнего "]".

например. используйте string.rstrip(",")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...