2010-03-09 2 views
3

У меня есть файл в формате с разделителями табуляции с трейлингом символами новых строки, например,Python - содержимое файла вложенного список

123 abc 
456 def 
789 ghi 

Я хотел бы написать функцию, чтобы преобразовать содержимое файла в вложенный список. На сегодняшний день я попробовал:

def ls_platform_ann(): 
    keyword = [] 
    for line in open("file", "r").readlines(): 
     for value in line.split(): 
      keyword.append(value) 

и

def nested_list_input(): 
    nested_list = [] 
    for line in open("file", "r").readlines(): 
     for entry in line.strip().split(): 
      nested_list.append(entry) 
      print nested_list 

.

Первый создает вложенный список, но включает символы \ n и \ t. Последний не делает вложенного списка, но довольно много эквивалентных списков без символов \ n и \ t.

Помогите?

С уважением, S ;-)

+2

Вам не нужно '.readlines()' при итерации по текстовому файлу. Также ваш 'ls_platform_ann' ** не создает ** вложенный список. Или вы не показываете нам весь соответствующий код – SilentGhost

ответ

3

Другой вариант, который не включает в себя модуль csv является:

data = [[item.strip() for item in line.rstrip('\r\n').split('\t')] for line in open('input.txt')] 

Как несколько строк будет выглядеть так:

data = [] 
for line in open('input.txt'): 
    items = line.rstrip('\r\n').split('\t') # strip new-line characters and split on column delimiter 
    items = [item.strip() for item in items] # strip extra whitespace off data items 
    data.append(items) 
3

Во-первых, есть взгляд на csv модуль, он должен обрабатывать пробелы для вас. Вы также можете позвонить по телефону strip() по значению/записи.

8

Вы хотите модуль csv.

import csv 

source = "123\tabc\n456\tdef\n789\tghi" 
lines = source.split("\n") 

reader = csv.reader(lines, delimiter='\t') 

print [word for word in [row for row in reader]] 

Выход:

[['123', 'abc'], ['456', 'def'], ['789', 'ghi']] 

В приведенном выше коде Ive поставить содержание права файла там для простого тестирования. Если Youre чтение из файла с диска вы можете сделать это, а также (что можно считать уборщик):

import csv 

reader = csv.reader(open("source.csv"), delimiter='\t') 

print [word for word in [row for row in reader]] 
Смежные вопросы