Как сделать каждую строку в файле данных кортежем в списке кортежей?

У меня есть текстовый файл CustomerList.txt и это выглядит так

134998,Madison,Foxwell,825 John Street,Staunton,VA,24401,6655414998

Конечный результат должен быть таким

with open("CustomerList.txt", "r") as fin:
    ID, Firstname, Lastname, Address, City, State, Zip, Phone = zip(*[l.split() for l in fin.readlines()])

Это то, что у меня пока есть, но я получаю сообщение об ошибке, которое говорит, что мне нужно более 3 значений для хранения. Я только вчера начал использовать кортежи, поэтому, пожалуйста, держите вещи как можно более простыми для этого новичка. Если бы вы могли включить объяснение, почему это сработало, было бы здорово!

Шаг 1: Каждая строка в файле данных должна стать кортежем в списке кортежей (или в списке в списке). Это должно быть до того, что я создал в последней программе, которая такова.

Шаг 2: Внутри возвращающей функции мне нужно получить идентификационный номер (например, 134998) для поиска совпадения, и, если совпадение найдено, вернуть его в виде кортежа / списка, если не вернуть пустой кортеж / список. Они могут быть строками, потому что они не являются вычислениями.

1 ответ

Надеемся, что ниже вы начнете:

Во-первых, по умолчанию split(), разделяется пробелами (то есть пустым пространством), и вы хотите, чтобы он разделялся запятой - поэтому измените его на: .split(',')...

Также я побежал rstrip() удалить символ new_line (\n).

Более того, вы хотите сжать заголовки каждой строки, а не общие данные. Ваш текущий цикл for зацикливается на строках (каждая из которых будет содержать отдельную запись данных), поэтому почтовый индекс должен быть внутри него (архивировать каждую отдельную строку), а не за его пределами (то есть не архивировать все данные). Кроме того, лично мне проще сжать массив, чем назначать длинный список переменных (я не уверен, что это действительно сработает).

Вот как я бы начал с первого шага:

with open("positionfile.txt", "r") as fin:
    header = ['ID', 'Firstname', 'Lastname', 'Address', 'City', 'State', 'Zip', 'Phone']
    print [zip(header,l.rstrip().split(',')) for l in fin.readlines()]
Другие вопросы по тегам