How to extract locations from strings of addresses?
    3 ビュー (過去 30 日間)
  
       古いコメントを表示
    
Hi all, 
I have more than a thousand of strings containing addresses. How can I programmatically extract the locations, like cities (e.g. Rome, London, etc) and countries (e.g. Italy, UK, etc)?
Thanks 
Pietro
8 件のコメント
  Akira Agata
    
      
 2019 年 1 月 13 日
				
      編集済み: Akira Agata
    
      
 2019 年 1 月 13 日
  
			How abou the following approach?
- Split each line with ';' character into 1 or 2 segments
 - Split each segment(s) with ',' mark into several fragments
 - Extract the last two fragments
 
The following is my try:
str = [...
  "Sustainable Industrial Systems, School of Chemical Engineering and Analytical Science, The University of Manchester, Manchester, United Kingdom; Dipartimento di Scienze Agrarie e Ambientali - Produzione, Territorio, Agroenergia, Università degli Studi di Milano, Milan, Italy";
  "Department of Agricultural and Environmental Sciences - Production, Landscape, Agroenergy, Università degli Studi di Milano, Via G. Celoria 2, Milano, Italy; Department of Earth and Environmental Sciences, University of Milano-Bicocca, Piazza della Scienza 1, Milano, Italy";
  "Department of Land and Agriculture and Forestry Systems, University of Padua, Viale dell'Università 16, 35020 Legnaro (PD), Italy";
  "Dipartimento di Agraria, University of Sassari, Sassari, Italy"];
for kk1 = 1:numel(str)
  strSplit = strsplit(str(kk1),';');
  strOut = repelem("",1,numel(strSplit));
  for kk2 = 1:numel(strSplit)
    strTmp = strsplit(strSplit(kk2),', ');
    strOut(kk2) = strjoin(strTmp(end-1:end),', ');
  end
  disp(strjoin(strOut,'; '))
end
The output is as follows:
    Manchester, United Kingdom; Milan, Italy
    Milano, Italy; Milano, Italy
    35020 Legnaro (PD), Italy
    Sassari, Italy
採用された回答
  Stephen23
      
      
 2019 年 1 月 13 日
        
      編集済み: Stephen23
      
      
 2019 年 1 月 13 日
  
      Using one simple regular expression:
>> C = {...
  'Sustainable Industrial Systems, School of Chemical Engineering and Analytical Science, The University of Manchester, Manchester, United Kingdom; Dipartimento di Scienze Agrarie e Ambientali - Produzione, Territorio, Agroenergia, Università degli Studi di Milano, Milan, Italy';
  'Department of Agricultural and Environmental Sciences - Production, Landscape, Agroenergy, Università degli Studi di Milano, Via G. Celoria 2, Milano, Italy; Department of Earth and Environmental Sciences, University of Milano-Bicocca, Piazza della Scienza 1, Milano, Italy';
  'Department of Land and Agriculture and Forestry Systems, University of Padua, Viale dell''Università 16, 35020 Legnaro (PD), Italy';
  'Dipartimento di Agraria, University of Sassari, Sassari, Italy'};
>> M = regexp(C,'[^,]+,[^,]+(?=;|$)','match');
>> M{:}
ans =
  ' Manchester, United Kingdom'
  ' Milan, Italy'
ans =
  ' Milano, Italy'
  ' Milano, Italy'
ans =
  ' 35020 Legnaro (PD), Italy'
ans =
  ' Sassari, Italy'
0 件のコメント
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!