Редактирование телефонных номеров - PullRequest
2 голосов
/ 31 марта 2010

Мне нужно скрыть номера телефонов и другие контактные данные в сгенерированном пользователем контенте, чтобы сделать онлайн-услугу ознакомительной. Входные данные - это объявления в стиле случайных объявлений, поэтому я хотел бы заменить все, что похоже на номер телефона (например, строку из 3 или более номеров) (телефонный номер скрыт), а также, возможно, удалить некоторые экзотические записи электронной почты. адреса.

Каков наилучший способ сделать это?

def redact_contact_details(s):
    # redact phone numbers
    ...
    # redact e-mail addresses
    ...
    # redact web addresses
    ...

Ответы [ 3 ]

2 голосов
/ 31 марта 2010

В Python для замены трех или более цифр на три точки в строке s:

import re
s = re.sub(r'\d{3,}', '...', s)

Мне сложно разобрать "Экзотические записи адресов электронной почты"; может быть, вы имеете в виду S / вещь, как

s = re.sub(r'[\w.]+@[\w.]+', '<email redacted>', s)
1 голос
/ 07 апреля 2010

Под веб-адресами я предполагаю, что вы имеете в виду URL. Вы можете создать массив, который содержит все возможные домены (".ca",".com",".uk"....). Затем вы можете запустить замену регулярного выражения для любого «слова», которое содержит один из доменов.

Чтобы выполнить замену, вы можете использовать код Алека Мартелли и вместо '@' вместо своей замены вставить соединение массива доменов. Функция объединения описана на этом сайте.

Если бы в perl я сделал бы матч как:

my $domainsString = join("|", @arrayOfPossibleDomains);
$s =~ s/\w+[$domainString]\w+/......./g;
0 голосов
/ 31 марта 2010

Вы можете создать простую функцию, которая просто заменяет любой буквенно-цифровой символ на «.» или любой другой символ, который вы хотите.

Например:

function HideInput($input) {
    $input = preg_replace("([a-zA-Z0-9])", "*", $input);
    return $input;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...