Как извлечь определенные слова из символьного вектора в MATLAB? - PullRequest
0 голосов
/ 17 октября 2019

Как извлечь определенные слова из символьного вектора в MATLAB? Я изо всех сил пытаюсь решить это. Я хотел бы получить только названия городов из этого символьного вектора:

myText = 'Vienna 2.7  Gallen  3.8  Zurich 0.9    Lugano 2.8   Rome 12.1   Paris 9.2'

Ответы [ 3 ]

5 голосов
/ 17 октября 2019

Вы можете разбить строку на вектор строк, используя это:

cities = split(myText);

Затем индексируйте только имена:

cities = cities(1:2:end);
4 голосов
/ 18 октября 2019

Это обрабатывает несколько слов имен ( Сан-Франциско , Ньюкасл-апон-Тайн ), включая тире ( Кармель-у моря ), апострофы ( L'Aquila ) или точек , за которыми следует пробел ( St. Gallen ). Предполагается, что имена разделяются любым символом, кроме букв, тире, пробела или апострофа, и что цифры никогда не заканчиваются точкой:

result = strtrim(regexp(myText, '([a-zA-Z\- '']|\. )+', 'match'));

Пример:

>> myText = 'San Francisco 2.7  Newcastle upon Tyne  3.8  Carmel-by-the-sea 0.9    L''Aquila 2.8  St. Gallen';
>> result = strtrim(regexp(myText, '([a-zA-Z\- '']|\. )+', 'match'))  
result =
  1×5 cell array
    {'San Francisco'}    {'Newcastle upon Tyne'}    {'Carmel-by-the-sea'}    {'L'Aquila'}    {'St. Gallen'}
2 голосов
/ 17 октября 2019
function out = extractName ( myText ) 
listOfWords = regexp(myText, '(([a-z_A-Z])+\s)' ,'match'  )
deleteLast = @(x) x(1:end-1);
out = cellfun(deleteLast , listOfWords ,'Uni', 0 ) ;

Тогда вы можете запустить его просто:

listOfNames = extractName(myText);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...