【问题标题】:How do you store text from a .txt file into a cell array in matlab?如何将 .txt 文件中的文本存储到 matlab 中的元胞数组中?
【发布时间】:2013-12-06 18:20:52
【问题描述】:

对于我正在做的这个项目,我必须分析公司推特页面上的推文。我取了这家公司的最后三十条推文,并将其放入 .txt 文档中,其中每一行都是不同的推文。我应该将所有主题标签存储在一个单元格数组中,然后将这些主题标签打印到命令窗口。 (主题标签也应该包括主题标签内的短语或单词。例如,#matlab #programming #stackoverflow。)我真的很困惑如何将它们存储到单元格数组中。这是我到目前为止的代码。它所做的只是计算整个文件中标签的数量。

%% Collecting the hashtags
fid=fopen('twitter.txt');
hashtag=0
nextLine=(fgetl(fid));
while ischar(nextLine)
if regexp(nextLine,'#')
    hashtag=hashtag+length(regexp(nextLine,'#'));
end
nextLine=(fgetl(fid));
end

有没有办法只获取文件内容并使用命令将其存储到单元格数组中,或者我是否必须手动将文件的整个内容复制并粘贴到下面的变量中,然后使用一段时间循环访问单元格数组并使用 fprintf 打印每个主题标签?

hashtagArray={'#...','#..',..}

【问题讨论】:

  • 你能发布一个推文示例文件吗?
  • 嘿,我试图发布推文的屏幕截图,但 stackoverflow 不允许我这样做,因为我需要更多经验值或其他东西。只需将其视为记事本文档,每条推文都有自己的行。它有 30 行长。如果您仍想查看该文件,我很乐意通过电子邮件将其发送给您。

标签: arrays matlab twitter hashtag


【解决方案1】:

如果您的文件仅包含来自推文的文本,则使用 textscan 将整个内容加载到一个元胞数组中(使用随机选择的组成推文进行测试):

fid=fopen('twitter.txt');
C = textscan(fid,'%s');
C = C{1};

C 现在应该是单词/标签的单元格数组(由空格分隔)。我们只需要标签:

k = strncmp(C, '#', 1); %looks for those with hash at the #start 
C2 = C(k); 

注意:官方推特将空格或标点符号视为主题标签的结尾(请参阅this question/answer)。因此,C2 可能包含类似 #noican't 的内容,而 Twitter 会将实际的主题标签识别为 #noican。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-29
    • 2013-12-21
    • 1970-01-01
    • 2014-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多