2017-01-13 2 views
-1

Если есть текстовый файл следующим образом:Чтение текстового файла в нескольких списках построчно

6 & ロク3 & サン 
9 & キュウ 
0 & ゼロ5 & ゴ 
7 & ナナみぎ & ミギひだり & ヒダリ 
うえ & ウエ 

Как можно прочитать в питон, чтобы получить список для каждого «столбца» таким образом, как эти :

a = ["6", "9", "0", "7", "うえ"] 
b = ["ロク3" , "キュウ", "ゼロ5", "ナナみぎ", "ウエ"] 
c = ["サン", "", "ゴ}", "ミギひだり", ""] 
d = ["", "ヒダリ", "", "", ""] 
+0

разделить и добавить в отдельный список, а затем распечатать эти списки. –

ответ

1

Попробуйте это:

with open(path, 'r') as inputFile: 
    lines = list() 

    for line in inputFile: 
     lines.append(line.split("&")) 

    maxLen = len(max(lines, key=lambda x: len(x))) 

    for line in lines: 
     while len(line) < maxLen: 
      line.append(" ") 

    column0 = [line[0] for line in lines] 
    column1 = [line[1] for line in lines] 
    . 
    . 
    . 

Кроме того, если вы хотите избавиться от пробелов в ваших «ячеек», используйте replace метод:

without_spaces = with_spaces.replace(" ", "") 

Чтобы использовать его, просто замените

lines.append(line.split("&")) 

с

lines.append(line.replace(" ", "").split("&")) 
1

itertools.izip_longest было бы очень удобно для выполнения этой задачи.

import itertools 

def cleanup(alist): 
    return [item.strip() for item in alist] 

with open('input.txt', 'r') as input_file: 
    lines = input_file.readlines() 
    contents = [cleanup(line.split('&')) for line in lines] 
    zipped = itertools.izip_longest(*contents, fillvalue='') 

    for column in zipped: 
     print column 

Обратите внимание, что zipped фактически итератор для всех столбцов.

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