如何在MatlabR2016B(mac版)中处理带字符串的CSV文件

如何在MatlabR2016B(mac版)中处理带字符串的CSV文件,matlab,csv,fopen,Matlab,Csv,Fopen,我现在尝试在MatlabR2016B mac版本中处理一个大型csv(200万行)。csv的一小部分如下所示 user_id,video_id,session,new_speed,old_speed,new_time,old_time,event_type,event_time a74fe6d4812fa93a1afa1a6a334ebdda,af7f974d395a4adddc8ab17a83996073,892d85cfeea8298fb7ca8755ac090e90,,,,,play_vi

我现在尝试在MatlabR2016B mac版本中处理一个大型csv(200万行)。csv的一小部分如下所示

user_id,video_id,session,new_speed,old_speed,new_time,old_time,event_type,event_time
a74fe6d4812fa93a1afa1a6a334ebdda,af7f974d395a4adddc8ab17a83996073,892d85cfeea8298fb7ca8755ac090e90,,,,,play_video,2015-04-06 22:20:58.928268
a74fe6d4812fa93a1afa1a6a334ebdda,af7f974d395a4adddc8ab17a83996073,892d85cfeea8298fb7ca8755ac090e90,,,161.0,72.581,seek_video,2015-04-06 22:20:58.879149
a74fe6d4812fa93a1afa1a6a334ebdda,7fb29805973a8a396c6de3faa8290ac1,892d85cfeea8298fb7ca8755ac090e90,,,,,play_video,2015-04-06 22:24:14.988693
a74fe6d4812fa93a1afa1a6a334ebdda,9ace07b312f206ef7af2f48188360b16,892d85cfeea8298fb7ca8755ac090e90,,,,,load_video,
我想做的是

  • 将csv文件读入matlab
  • 将用户id和视频id映射成简单的数字id
  • 删除会话id

  • 我尝试了很多方法,但都没有达到我想要的效果
    csvread
    无法处理此csv文件,因为里面有一些非数字项,而我对
    fopen
    不熟悉,总是会遇到一些奇怪的错误,比如所有数据都进入一个单元格。这个问题有什么解决办法吗?

    我无法想象你将如何处理这个字符串数组。如果您只需要编辑文件,我建议使用python(这是最简单的,但不是最快的,尽管比matlab快)或C(在200万行的情况下,这要快得多,但不是最简单的)


    据我在Matlab中看到的,它非常擅长对矩阵进行数学运算,但对于您想要做的事情来说,它不是一个好的选择。也许,如果你说你将如何处理所有这些数据(我是说,在你说了之后的数学运算),有人可以帮助你

    由于您前面提到的文本格式不同,因此最好使用
    textread()
    函数。它返回1D单元格数组。因此,首先必须通过
    regexp()
    对其进行解析,并以以下方式对单元格进行索引:

    Thecell{row}{column}  %accessing cell elements
    

    我们开始:

    cellarray = textread('Put directory here','%s',9);
    
    for i=1:length(cellarray)
    parsed_cell{i} = regexp(cellarray, ',', 'split'); %% Parsing 1d cell
    end
    
    %% 3 items which you wanted for e.g. the first line
    line1 = parsed_cell{1};
    line1{1}{3} = []; %% Deleting session id in line 1 of the text.
                      %%easily can be implemented for others
    
    %% putting user_id,video_id into number id  in line 1. 
    numberid = [line1{1}{1},line1{1}{2}]; 
    

    谢谢你的评论!我正在挣扎是否也应该转向python。但是,由于我以前没有使用过python,请您给我一些提示,说明我可以使用哪些函数来处理此问题?有一个很好的用于处理csv文件的库:您可以在文档中看到一些示例。非常感谢您的帮助!我的回答解决了你的问题吗?@Poyuan.Bn对不起,我现在刚检查过。它很有效,非常感谢!