【问题标题】:Creating a loop in MATLAB to split up a list of sentences by a delimiter在 MATLAB 中创建循环以按分隔符拆分句子列表
【发布时间】:2023-01-26 20:57:25
【问题描述】:

我希望能够在我当前的代码中运行一个循环。我有一个包含 423 个单元格的单元格数组。每个单元格都是一长串较小的字符串,我试图用分隔符 (;) 分隔它们,我希望它循环遍历每个单元格,根据分隔符拆分字符串并将单元格写入我创建的 excel 工作表。但它只处理最近的单元格,而不是聚合所有单元格。

我有一个 excel 表(见屏幕截图),在 C 列中我有很多小句子,它们都用分隔符“;”分隔。我希望代码遍历 excel 中的每一行并拆分这一大堆文本,以便分隔符之间的每个句子都有自己的单元格,而不是放在一起。我设法使代码适用于一行,因此代码将所有小字符串分隔到它自己的新行或新单元格中。但是我不能对 excel 中的每一行都执行此操作,代码只会覆盖每一行。我想创建一个循环并迭代该过程。然后我想让它把这个大列表写到一个新的 Excel 工作表中。我现在尝试创建一个迭代循环,但它无法正常工作;它将字符串写入 excel 但由于某种原因它没有捕获所有字符串。

这是明文代码:

clc
clear
close all

T = readtable("********","range", "C1:C424");
C = table2cell(T);


for i=2:423
splitlist = unique(strsplit(C{i:i},';')) 

writecell(splitlist','not_list.xlsx')

end

【问题讨论】:

    标签: matlab loops iteration cell-array


    【解决方案1】:

    您需要将WriteMode', 'append' 添加为writecell 的输入。

    我只在网上测试过这个,但它似乎工作正常。

    for i = 1:numel(C)
       split_str = unique(strsplit(C{i},';'))
       writecell(split_str, 'not_list.xlsx', 'WriteMode','append');
    end
    

    【讨论】:

    • 太好了,非常感谢您的帮助。但是,它是将每个字符串以列和行的形式写入到excel文件中,是否可以将它们全部写入一列中?
    • 您是否尝试过简单地转置split_strwritecell(split_str', 'not_list.xlsx', 'WriteMode','append')
    猜你喜欢
    • 2019-03-27
    • 1970-01-01
    • 1970-01-01
    • 2018-06-18
    • 2018-03-12
    • 1970-01-01
    • 1970-01-01
    • 2022-09-24
    • 1970-01-01
    相关资源
    最近更新 更多