i*********9 发帖数: 44 | 1 比如有记录:
KELLY SERVICES INC
FIDELITY HIGH INCOME INC
TALENT SERVICES -CL A
如何才能删去每个记录最后的"INC"或“-CL A"?多谢!! |
w********5 发帖数: 72 | 2 data name;
length name $100;
infile datalines dsd missover;
input name $;
datalines;
'KELLY SERVICES INC'
'FIDELITY HIGH INCOME INC'
'TALENT SERVICES -CL A'
;
run;
data name1;
set name;
Again=scan(name,1,' ')||" "||scan(name,2,' ');
run; |
i*********9 发帖数: 44 | 3 谢谢!可是第二个记录成了
FIDELITY HIGH
而我想要的是
FIDELITY HIGH INCOME
只去掉尾巴上的INC
好像很难办。。。
【在 w********5 的大作中提到】 : data name; : length name $100; : infile datalines dsd missover; : input name $; : datalines; : 'KELLY SERVICES INC' : 'FIDELITY HIGH INCOME INC' : 'TALENT SERVICES -CL A' : ; : run;
|
D******n 发帖数: 2836 | 4 u didnt clearly define what you want. what is the tail u r talking about.
just thos two cases?
if u dont know, computer doesnt know either.
【在 i*********9 的大作中提到】 : 谢谢!可是第二个记录成了 : FIDELITY HIGH : 而我想要的是 : FIDELITY HIGH INCOME : 只去掉尾巴上的INC : 好像很难办。。。
|
g********d 发帖数: 2022 | 5 改了一下楼上那位大侠的。
假设最长的公司名只有5个,例子我改了一下为了测试。
attention那个变量是用来探测可能中间有“INC”,"-CL", "A"需要保留的,可能对你
没什么用,但是只是一个谨慎的思路。
data name;
length name $100;
infile datalines dsd missover;
input name $;
datalines;
'KELLY INC SERVICES INC'
'FIDELITY HIGH INCOME INC'
'A TALENT SERVICES -CL A'
'.'
;
run;
data name1;
set name;
A1=scan(name,1,' ');
A2=scan(name,2,' ');
A3=scan(name,3,' ');
A4=scan(name,4,' ');
A5=scan(name,5,' ');
array aa(5) A1-A5;
do i=1 to 5;
if aa(i)="INC" or aa(i)="-CL" or aa(i)="A" then aa(i)="";
e
【在 i*********9 的大作中提到】 : 谢谢!可是第二个记录成了 : FIDELITY HIGH : 而我想要的是 : FIDELITY HIGH INCOME : 只去掉尾巴上的INC : 好像很难办。。。
|
N**D 发帖数: 10322 | 6 $s = %s/INC$//g;
one line in perl
【在 i*********9 的大作中提到】 : 比如有记录: : KELLY SERVICES INC : FIDELITY HIGH INCOME INC : TALENT SERVICES -CL A : 如何才能删去每个记录最后的"INC"或“-CL A"?多谢!!
|
i*********9 发帖数: 44 | 7 PERL如此Powerful,我很想学学
请问大侠我该下载Strawberry Perl还是ActivePerl?我是初学者。。。多谢!
【在 N**D 的大作中提到】 : $s = %s/INC$//g; : one line in perl
|
i*********9 发帖数: 44 | 8 小的向高手们诚挚的致敬
【在 g********d 的大作中提到】 : 改了一下楼上那位大侠的。 : 假设最长的公司名只有5个,例子我改了一下为了测试。 : attention那个变量是用来探测可能中间有“INC”,"-CL", "A"需要保留的,可能对你 : 没什么用,但是只是一个谨慎的思路。 : data name; : length name $100; : infile datalines dsd missover; : input name $; : datalines; : 'KELLY INC SERVICES INC'
|
i*********9 发帖数: 44 | 9 我想到一个办法
首先用SCAN找出所有结尾为INC,-CL A的observations
然后用tranwrd来把它们都替换为' '就行了
【在 w********5 的大作中提到】 : data name; : length name $100; : infile datalines dsd missover; : input name $; : datalines; : 'KELLY SERVICES INC' : 'FIDELITY HIGH INCOME INC' : 'TALENT SERVICES -CL A' : ; : run;
|
z**k 发帖数: 378 | 10 ActivePerl
【在 i*********9 的大作中提到】 : PERL如此Powerful,我很想学学 : 请问大侠我该下载Strawberry Perl还是ActivePerl?我是初学者。。。多谢!
|
|
|
s******r 发帖数: 1524 | 11 It is bad idea. You are facing some uncertain.
For instance a company name is : xxxxx INCER**. you code would fail.
With limited word to remove, try something like
data name;
length name $100;
infile datalines dsd missover;
input name $;
if scan(name,-1)='INC' then
_name=substr(name,1, length(name)-3);
else if scan(name,-1,'-')='CL A' THEN
_name=substr(name,1, length(name)-6);
datalines;
'KELLY SERVICES INC'
'FIDELITY HIGH INCOME INC'
'TALENT SERVICES -CL A'
;
run;
【在 i*********9 的大作中提到】 : 我想到一个办法 : 首先用SCAN找出所有结尾为INC,-CL A的observations : 然后用tranwrd来把它们都替换为' '就行了
|
S******y 发帖数: 1123 | 12 #Run this in Python -
S= ['KELLY SERVICES INC',
'FIDELITY HIGH INCOME INC',
'TALENT SERVICES -CL A']
for item in S:
clean_line = item.rstrip('INC-CLA ')
print clean_line
#output --
'''
KELLY SERVICES
FIDELITY HIGH INCOME
TALENT SERVICES
''' |
a****g 发帖数: 8131 | 13 good one
【在 s******r 的大作中提到】 : It is bad idea. You are facing some uncertain. : For instance a company name is : xxxxx INCER**. you code would fail. : With limited word to remove, try something like : data name; : length name $100; : infile datalines dsd missover; : input name $; : if scan(name,-1)='INC' then : _name=substr(name,1, length(name)-3); : else if scan(name,-1,'-')='CL A' THEN
|
b******e 发帖数: 539 | 14 Nice
【在 S******y 的大作中提到】 : #Run this in Python - : S= ['KELLY SERVICES INC', : 'FIDELITY HIGH INCOME INC', : 'TALENT SERVICES -CL A'] : for item in S: : clean_line = item.rstrip('INC-CLA ') : print clean_line : #output -- : ''' : KELLY SERVICES
|
i*********9 发帖数: 44 | 15 Python is great! Thank you!!
【在 S******y 的大作中提到】 : #Run this in Python - : S= ['KELLY SERVICES INC', : 'FIDELITY HIGH INCOME INC', : 'TALENT SERVICES -CL A'] : for item in S: : clean_line = item.rstrip('INC-CLA ') : print clean_line : #output -- : ''' : KELLY SERVICES
|
l*****8 发帖数: 483 | 16 aa=substr(string,1,length(string)-length(scan(string,-1,' '))); |
S******y 发帖数: 1123 | 17 #A slight enhanced version
#Python 3.1
S= ['KELLY SERVICES INC',
'FIDELITY HIGH INCOME INC',
'TALENT SERVICES -CL A',
'INTLEL',
'ABC International']
for item in S:
#print(item)
ls=item.split()
if len(ls) == 1 or len(ls) == 0: #if less or equal than one word, do not clean
clean_line = item
else:
clean_line = item.upper().rstrip('INC-CLA ')
print(clean_line) |
i*********9 发帖数: 44 | 18 Great! Thank you for the code!
【在 s******r 的大作中提到】 : It is bad idea. You are facing some uncertain. : For instance a company name is : xxxxx INCER**. you code would fail. : With limited word to remove, try something like : data name; : length name $100; : infile datalines dsd missover; : input name $; : if scan(name,-1)='INC' then : _name=substr(name,1, length(name)-3); : else if scan(name,-1,'-')='CL A' THEN
|