No science, No life.

もっと科学を身近に

MatlabでTwitterのAPIを使う (2)

前回の記事のままでは、(英語のツイートは良いのですが) 日本語のツイートはちゃんと表示されません。

たとえば下のように@MATLAB_jpのツイートを取得すると、\u(4ケタの16進数)の羅列からなるユニコードが得られます。

tw = twitty();
S = tw.userTimeline('screen_name', 'MATLAB_jp');
disp(S{1}{1}.text)

#MATLAB \u4fbf\u5229\u95a2\u6570\u7d39\u4ecb \u300cismember\u300d...

そこで、下の関数unicode2txt.mで読めるテキストに変換することにします。関数hex2decでユニコードの16進数を10進数に変換し、さらに関数charで文字に変換しています。

% convert unicode-including string to readable text
function str = unicode2txt(str)

idx = strfind(str,'\u');
for ii=1:length(idx)
    idxTmp = idx(end+1-ii);
    str(idxTmp) = char(hex2dec(str(idxTmp+2:idxTmp+5)));
    str(idxTmp+1:idxTmp+5) = [];
end

これで下のような日本語テキストを得ることができます。

tw = twitty();
S = tw.userTimeline('screen_name', 'MATLAB_jp');
disp(unicode2txt((S{1}{1}.text)))

#MATLAB 便利関数紹介 「ismember」 はデータの重複した要素を探す関数ですが、...