2016-12-09 15 views
0

У меня есть текстовый файл с именем CustomerList.txt, и это выглядит как этотКак я могу сделать каждую строку в файле данных кортежем в списке кортежей?

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

The end result should be like this

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: Каждая строка в файле данных должна быть кортежем в списке кортежей (или в списке в списке). It would need to be before what I created in the last program which is this.

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

+1

'раскол()' расщепляется с помощью символа пробела '» «'(по умолчанию). Я думаю, вы просто хотите разбить по запятым '', ​​'', поэтому попробуйте использовать' l.split (', ') 'вместо этого ... – Julien

ответ

0

Будем надеяться, что ниже поможет вам начать:

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

Кроме того, я запустил rstrip(), чтобы удалить символ new_line (\n).

Кроме того, вы хотите закрепить заголовки каждой строки, а не общие данные. Ваш текущий цикл «loop», петли над строками (каждый из которых будет содержать отдельный ввод данных), поэтому zip должен быть внутри него (застежка каждой отдельной строки), а не за его пределами (т. Е. Не застегивать все данные). Кроме того, мне лично легче зашифровать массив, а не назначать переменные длинного списка (я не уверен, что это действительно сработает).

Это, как я хотел бы начать с первого шага:

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()] 

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

  • Нет связанных вопросов^_^