Мне нужно знать, как получить последние символы некоторых строк - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть эти символы DDSPRJ11 DDSPRJ12 DDSPRJ12 DDRJCT

в случае первых 3 я хочу, чтобы последние 4 символа были в случае последних, я хочу последние 3 символа, как я могу получить их, используя substrи получите их в правильном порядке, например: RJ11.

Ответы [ 3 ]

0 голосов
/ 20 ноября 2018

@ user667489 - идеальный ответ, если вы можете прочитать все значения отдельно.если она находится в той же переменной, как показано ниже, вы можете использовать тот же код, который указан @ user667489.и добавить можно добавить можно функционировать.prxnext, также может быть использован для достижения того же.оба примера показаны ниже

data have;
 val= "DDSPRJ11 DDSPRJ12 DDSPRJ12 DDRJCT";
 run;

/* using prxchange with scan*/
 data want;
set have;
suffix = prxchange('s/(DDSP|DDR)//', -1, val);
 do i = 1 to countw(suffix,' ');
 newstr= scan(suffix, i);
output;
 end;
 drop suffix val;
 run;

/* using prxposn*/

 data want;
length val1 re $200.;
 set have;
start = 1;
stop = length(val);

re = prxparse('/(DDSP|DDR)/');
set have;
call prxnext(re, start, stop, trim(val), position, length);
  do while (position > 0);
     val1 = substr(val, position+length, length);
     call prxnext(re, start, stop, trim(val), position, length);
     output;
  end;
drop re start stop position length val;
run;
0 голосов
/ 20 ноября 2018

Вот как вы можете сделать это на простом питоне. Я предположил, что вы хотите последние 4 символа каждого слова, кроме последнего.

string_1 = 'DDSPRJ11 DDSPRJ12 DDSPRJ12 DDRJCT'

list_string = string_1.split ()

new_list = []

для i в диапазоне (len (list_string)):

если i == len (list_string) - 1:

new_list.append(list_string[i][-3:])

еще:

new_list.append(list_string[i][-4:])

печать (new_list)

Выход: ['RJ11', 'RJ12', 'RJ12', 'JCT']

0 голосов
/ 20 ноября 2018

Это можно сделать с помощью сопоставления регулярных выражений, используя prxchange:

data have;
infile datalines;
input mystr $ @@;
datalines;
DDSPRJ11 DDSPRJ12 DDSPRJ12 DDRJCT
;
run;

data want;
  set have;
  suffix = prxchange('s/(DDSP|DDR)(.*)/$2/', 1, mystr);
run;
...