我对prxchange函数有疑问。 我有一个包含字母数字字符,特殊字符和空格的变量,我想获取没有数字和特殊字符的变量,但不删除空格
我使用:UPCASE(prxchange(" s/[^A-Z]//i",-1,variable));
但是我得到的值没有空格
PROVA DB2.? RACF2
PROVA DB RACF
PROVADBRACF
我该怎么办?谢谢, 码头
答案 0 :(得分:0)
您可以使用:
UPCASE(prxchange(" s/[^A-Z\s\t]*//i",-1,variable));
\t
-所有标签
\s
-所有空格
代码:
data l;
variable="PROVA DB2.? RACF2";
v2=UPCASE(prxchange(" s/[^\w\s\t]//i",-1,variable));
run;
结果:
PROVA DB RACF
答案 1 :(得分:0)
在字符类中添加一个空格。我将空格放在了Z
之后,尽管它也可能早于A
UPCASE(prxchange("s/[^A-Z ]//i",-1,variable));
可以在Perl Regular Expressions Tip Sheet
中找到SAS中的正则表达式的快速摘要。否定的字符类说明符[^]
枚举替换操作期间要保留(或不匹配)的字符。
[^A-Z]
方法不匹配字母A
至Z
之间的任何字符,该字符不包含空格字符,因此空格将被删除。
您编写的用于替换的表达式是删除任何不匹配字母的序列
答案 2 :(得分:0)
如@dork horsten所述,在这种情况下,简单的压缩功能就足够了
dict1 = [{'12/21/18': 0,'12/22/18': 0,'12/23/18': 1,'12/24/18': 1},
{'12/21/18': 1,'12/22/18': 1,'12/23/18': 0,'12/24/18': 1},
{'12/21/18': 0,'12/22/18': 1,'12/23/18': 0,'12/24/18': 0},
{'12/21/18': 1,'12/22/18': 0,'12/23/18': 1,'12/24/18': 1}]
df1 = pd.DataFrame(dict1, index= ['AAPL','CSCO','GE','MSFT' ])
dict2 = [{'Ticker': 'AAPL','Date': '12/23/18'},
{'Ticker': 'AAPL','Date': '12/24/18'},
{'Ticker': 'CSCO','Date': '12/22/18'},
{'Ticker': 'CSCO','Date': '12/24/18'},
{'Ticker': 'GE', 'Date': '12/22/18'},
{'Ticker': 'MSFT','Date': '12/24/18'}]
df2 = pd.DataFrame(dict2)