Зачем повторно в python добавлять пробел после замены? Как избавиться от места? - PullRequest
1 голос
/ 03 мая 2020
import re
def transformrec(record):
    new_record = re.sub(r"([\d-]+\,)",r"+1-\1\0", record)
    search_pa=re.search(r"(\,[\d-]+\,)",record)
    #print(search_pa[0])
    #print(search_pa[1])
    print(new_record)

print(transformrec("Sabrina Green,802-867-5309,System Administrator"))

Выход

O/P : Sabrina Green,+1-802-867-5309, System Administrator.

В этом случае после номера 802-867-5309,

появляется дополнительный пробел

Ответы [ 2 ]

5 голосов
/ 03 мая 2020

Это не пробел, это NUL символ. Из руководства :

\number

Соответствует содержимому группы с тем же номером. Группы нумеруются, начиная с 1. Например, (.+) \1 соответствует 'the the' или '55 55', но не 'thethe' (обратите внимание на пробел после группы). Эта специальная последовательность может использоваться только для соответствия одной из первых 99 групп. Если первое число git числа равно 0 или число имеет длину 3 восьмеричных цифры, оно будет интерпретироваться не как групповое совпадение, а как символ с восьмеричным значением числа . Внутри '[' и ']' класса символов все экранированные числа c обрабатываются как символы.

В вашей замене \0, что интерпретируется как NUL символ. Исправление заключается в том, чтобы просто удалить его.

new_record = re.sub(r"([\d-]+\,)",r"+1-\1", record)
4 голосов
/ 03 мая 2020

У вас странная ссылка на \0. Удалите его:

re.sub(r"([\d-]+\,)",r"+1-\1", record)

И, как кто-то уже предложил, return новое значение, не печатайте его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...