我需要在用户生成的内容中隐藏电话号码和其他联系方式,以便提供在线介绍服务。输入是随机分类广告,因此我想要替换看起来像电话号码的任何东西(例如:3个或更多数字的字符串)(电话号码隐藏),也可能删除一些异国情调的电子邮件地址。
这样做的最佳方式是什么?
def redact_contact_details(s):
# redact phone numbers
...
# redact e-mail addresses
...
# redact web addresses
...
答案 0 :(得分:2)
在Python中,用字符串s
中的三个点替换三个或更多数字:
import re
s = re.sub(r'\d{3,}', '...', s)
“电子邮件地址的外来符号”对我来说很难解析;也许你的意思是像
这样的东西s = re.sub(r'[\w.]+@[\w.]+', '<email redacted>', s)
答案 1 :(得分:1)
通过网址,我猜你的意思是网址。您可以创建一个包含所有可能域(".ca",".com",".uk"....)
的数组。然后,您可以对包含其中一个域的任何“单词”运行正则表达式替换。
要进行替换,您可以使用Alec Martelli的代码,而不是将'@'放在替换中,放置域数组的连接。联接功能在this站点上进行了说明。
如果在perl我会做匹配,如:
my $domainsString = join("|", @arrayOfPossibleDomains);
$s =~ s/\w+[$domainString]\w+/......./g;
答案 2 :(得分:0)
您可以创建一个简单的函数,只需用“。”替换任何字母数字字符。或者你想要的任何其他角色。
例如:
function HideInput($input) {
$input = preg_replace("([a-zA-Z0-9])", "*", $input);
return $input;
}