2016-08-11 3 views
-2

私はテキストファイルから単語を抽出するためにmatlabを使用しています。私はいくつかのテキストファイルを持っていて、それぞれのファイルの一部に 'AB'という文字をスキャンします。テキストファイルから特定の段落を読むmatlab

私の知る限り、テキストファイルから特定の行を読み込む方法はわかっていますが、フォルダー内のすべてのテキストファイルに同じコードを適用したいので、行番号は毎回異なります。毎回それを変更する。

これは私のテキストファイルのすべてが(サンプル)のようになります。

PMID- 27401974
OWN - NLM
STAT-出版社
DP - 2016年7月8日
TI - ノース - 南半球における磁気磁気ガンマプロテオバクテリアの探索AB-Magnetotactic bacteria(MTB)は、系統的に多様な群の原核生物を含み、磁場線に沿って配向およびナビゲートすることができる原核生物である。 の腐食条件下では、北半球の自然環境におけるMTBは、地球磁力線に平行して北極(NS)極性を示し、一方、南半球のものは一般的に磁力線(南-seeking(SS)極性)。
CI - Copyright(c)2016、American Society for Microbiology。全著作権所有。
FAU - Leao、ペドロ
AU - Leao P

事前にありがとうございます!

+0

[尋ねる]を参照してください。 StackOverflowはコード作成サービスではありません。 – excaza

答えて

2

私はregexpはあなたの友人であると仮定します

fid = fopen('/path/to/file.txt'); 
line = fgetl(fid); 
target = ''; 
found_ab = false; 
while ischar(line) 
    line = strtrim(line); % remove trailing white space 
    if ~found_ab   
     res = regexp(line, '^AB\s*-?\s*(\S.*)$', 'tokens', 'once'); 
     if ~isempty(res) 
      target = res{1}; 
      found_ab = true; 
     end 
    else 
     % we found an "AB -" line, we see if there are multiple lines here 
     res = regexp(line, '^[A-Z]+\s-\s'); 
     if ~ismepty(res) 
      % we reached the end of AB - lines 
      break; 
     end 
     % there are multiple text lines for "AB - " 
     target = [target, line]; 
    end 
    line = fgetl(fid); 
end 
fclose(fid); 
+1

ありがとうございました! – tamkrit

関連する問題