Привет, когда я пытаюсь разделить строку из файла, он занимает пробел в качестве элемента, когда я сохраняю его в список Python - PullRequest
0 голосов
/ 17 октября 2018

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

[('yes', 31, 'good'), ('yes', 31, 'good'), ('yes', 31, 'good')]

, и мой файл будет выглядеть так

my flie Image

проблема в том, что когда я разделяю его со знаком конца строки (\n), получается, что элемент содержит пробел, такой как вывод вниз

то, что я здесь делал, это разбиениеэто в списке

Я хочу знать, почему я получаю это пространство как элемент после каждой строки в списке

with open('c:\\users\\Ahmed Zaky\\Desktop\\Ahmed\\Master\\TUB\\PyML\\Lecture 1 15 Oktober - 21 Oktober\\Exercise Sheet 1\\health-test.txt','r') as h_test:

D = list()

for t in h_test:
    D.extend([x for x in str.split(t,'\n')])

print(D)

output

['yes,21,poor', '', 'no,50,good', '', 'no,23,good', '', 'yes,45,poor', '', 'yes,51,good', '', 'no,60,good', '', 'no,15,poor', '', 'no,18,good', '']

списоккортежи выглядят так:

with open('c:\\users\\Ahmed Zaky\\Desktop\\Ahmed\\Master\\TUB\\PyML\\Lecture 1 15 Oktober - 21 Oktober\\Exercise Sheet 1\\health-test.txt','r') as h_test:

D = list()

for t in h_test:
    D.extend([(x,) for x in str.split(t,'\n')])

print(D)

output

[('yes,21,poor',), ('',), ('no,50,good',), ('',), ('no,23,good',), ('',), ('yes,45,poor',), ('',), ('yes,51,good',), ('',), ('no,60,good',), ('',), ('no,15,poor',), ('',), ('no,18,good',), ('',)]

1 Ответ

0 голосов
/ 17 октября 2018

Вместо split на новой строке вместо strip пробела от строки.Затем split строк, которые вы получаете на запятых, и преобразовать второе значение в int:

with open(path) as h_test:
    stripped_lines = (line.strip() for line in h_test)
    non_empty_lines = (line for line in stripped_lines if line)
    split_lines = (line.split(',') for line in non_empty_lines)
    D = [(a, int(b), c) for a, b, c in D]

Это не удастся, если есть строки, которые не имеют трех значений, со вторымзначение int.В зависимости от ваших данных, вы можете проверить это.

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