将MATLAB字符串数据写入csv,然后从python作为字符串调用csv数据

时间:2018-11-30 16:38:44

标签: python string matlab csv

要将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 :(得分:2)

您正在尝试将字符串保存为支持数字的格式。请勿将圆钉塞入方孔,而应插入圆孔,例如.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中工作,但解析纯字符串以形成合适的格式应该不会太麻烦。

答案 1 :(得分:0)

不确定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对字符串不做任何操作,因为没有前导或尾随空格。希望有帮助。

答案 2 :(得分:-2)

根据Matlab's documentation for csvwrite,它仅支持数字矩阵。最好使用支持字符串的xlswrite。 Python还具有读取excel文件的功能,因此从csv到xls的切换应该很简单。