Записать данные строки MATLAB в CSV, а затем вызвать данные CSV из Python в виде строки - PullRequest
0 голосов
/ 30 ноября 2018

Для преобразования данных MATLAB в csv мой код:

M={'It is raining since morning'}
csvwrite('data.csv',M)

, который сохраняет предложение как отдельный символ в одной ячейке

| I | t | | i | s | | r | a | i | n | i | n | g |......

И когда я вызываю его из Python,мой код:

import csv
with open('data.csv') as csvfile:
    readCSV = csv.reader(csvfile)
    for row in readCSV:
        a=(row)
        print(a)

, который дает результат:

['I', 't', ' ', 'i', 's', ' ', 'r', 'a', 'i', 'n', 'i', 'n', 'g', ' ', 's', 'i', 'n', 'c', 'e', ' ', 'm', 'o', 'r', 'n', 'i', 'n', 'g']

Все, что я хочу, это сохранить это предложение в виде строки, как это, "It is raining Since Morning".

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

>> ['I', 't', ' ', 'i', 's', ' ', 'r', 'a', 'i', 'n', 'i', 'n', 'g', ' ', 's', 'i', 'n', 'c', 'e', ' ', 'm', 'o', 'r', 'n', 'i', 'n', 'g']

Это выдает ошибку:

AttributeError: у объекта 'list' нетатрибут 'strip'

Ответы [ 3 ]

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

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

I,t, ,i,s, ,r,a,i,n,i,n,g, ,s,i,n,c,e, ,m,o,r,n,i,n,g 

Чтобы сохранить только одну строку в CSV, попробуйте сделать ее единственным элементом массива, чтобы получить следующий текст в CSV

It is raining since morning  

Тем не менее, CSV на самом деле не кажется подходящим форматом для вашего варианта использования.Почему бы не простой файл .txt?

На стороне Python, если вы заставите вышеописанное работать с загрузкой с csv, как у вас, появится список с отдельным элементом:

print(a)

Out: ['It is raining since morning']

В качестве альтернативы вы можете создатьСтрока, которую вы хотите из списка символов с:

a = ''.join(a)

Кроме того, примечание: strip не будет ничего делать с этой строкой, так как нет пробелов в начале или в конце.Надеюсь, это поможет.

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

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

M='It is raining since morning'; % Why a cell? Character arrays work better
FiD = fopen('data.txt','w+'); % Create and open file for writing
fprintf(FiD,M); % write data
fclose(FiD); % Close file

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

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

Согласно документации Matlab для csvwrite он поддерживает только числовые матрицы.Вам лучше использовать xlswrite , который поддерживает строки.Python также имеет возможность чтения в файлах Excel, поэтому переход с csv на xls должен быть тривиальным.

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