Вложенные списки в Python, содержащие одну строку, а не отдельные буквы - PullRequest
0 голосов
/ 17 ноября 2018

Мне нужно загрузить текст из файла, который содержит несколько строк, каждая строка содержит буквы, разделенные запятой, в двухмерный список. Когда я запускаю это, я получаю двухмерный список, но вложенные списки содержат отдельные строки вместо разделенных значений, и я не могу перебирать их. как мне это решить?

def read_matrix_file(filename):
    matrix = []
    with open(filename, 'r') as matrix_letters:
        for line in matrix_letters:
            line = line.split()
            matrix.append(line)
    return matrix

результат:

[['a,p,p,l,e'], ['a,g,o,d,o'], ['n,n,e,r,t'], ['g,a,T,A,C'], ['m,i,c,s,r'], ['P,o,P,o,P']]

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

заранее спасибо

Ответы [ 3 ]

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

Формат ввода, который вы описали, соответствует формату CSV.Python имеет библиотеку только для чтения файлов CSV.Если вы просто хотите выполнить работу, вы можете использовать эту библиотеку, чтобы сделать работу за вас.Вот пример:

Вход (test.csv):

a,string,here
more,strings,here

Код:

>>> import csv
>>> lines = []
>>> with open('test.csv') as file:
...     reader = csv.reader(file)
...     for row in reader:
...             lines.append(row)
...
>>>

Выход:

>>> lines
[['a', 'string', 'here'], ['more', 'strings', 'here']]
0 голосов
/ 17 ноября 2018

Использование функции strip () также избавит от символа новой строки:

def read_matrix_file(filename):
    matrix = []
    with open(filename, 'r') as matrix_letters:
        for line in matrix_letters:
            line = line.split(',')
            line[-1] = line[-1].strip()
            matrix.append(line)
    return matrix
0 голосов
/ 17 ноября 2018

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

def read_matrix_file(filename):
    matrix = []
    with open(filename, 'r') as matrix_letters:
        for line in matrix_letters:
            line = line.split(',')
            matrix.append(line)
    return matrix
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...