Sas 如何删除特殊的ASCII字符?

Sas 如何删除特殊的ASCII字符?,sas,Sas,我正在尝试从字符串中删除特殊字符 孟买降雨实况更新:IMD预测未来24小时将有强降雨� data demo1 (keep=headline2 headline3 headline4 headline5); set kk.newspaper_append_freq_daily1; headline2=trim(headline); headline3=tranwrd(headline2,"�"," "); headline5=compress(headline2,"�"); headline4=i

我正在尝试从字符串中删除特殊字符

孟买降雨实况更新:IMD预测未来24小时将有强降雨�

data demo1 (keep=headline2 headline3 headline4 headline5);
set kk.newspaper_append_freq_daily1;
headline2=trim(headline);
headline3=tranwrd(headline2,"�"," ");
headline5=compress(headline2,"�");
headline4=index(headline2,"�");
run;
您可以使用函数。 从文件:

删除或转换不可打印的字符

代码示例:

%let in=kk.newspaper_append_freq_daily1;
%let out=demo1;

data &out; 
set ∈ 
array cc (*) _character_; 
do i=1 to dim(cc); 
 cc(_N_)=kpropdata(cc(i),"TRUNC", 'utf-8'); 
 end; 
run; 
在代码中,我使用语句对表中的所有字符列进行迭代。

如果您保留了一个字符白名单,而不是试图排除一个黑名单,compress也应该处理这个问题-例如

clean_text = compress(dirty_text,'','kw');

k修饰符保留字符而不是删除字符,w将所有可打印的字符添加到列表中。

在这种情况下,tranwrd和compress不会提供所需的结果吗?我想他们会的。如果您想删除所有特殊字符,我会根据需要使用compress和“k”选项。另一个选项是translate函数� 向用户指示由于错误处理而丢失了部分文本数据的位置,很可能是由于使用错误的字符编码进行解码。试着解决那个问题。