Подставляя часть массива, используя re - PullRequest
1 голос
/ 01 апреля 2019
9    7   316 Lake St     Arran Dr    St. Catharines, ON L2N 4H4     Phone:  905-934-5885    112.9   123 130 --- 1/1/18
10   Esso    142 Lakeshore Rd    Geneva St   St. Catharines, ON L2N 2T5 Phone:  905-646-4558    112.7   125.9   131.9   --- 1/1/18
11   Petro-Canada    533 Lake St     Linwell Rd  St. Catharines, ON L2N 4H6 Phone:  (905) 937-7719  112.9   125.9   131.9   124.9   1/1/18

У меня есть данные выше, где мне нужно изменить (905) на 905, чтобы все данные были в одинаковом формате. Я попытался прочитать это содержимое как список и импортировать заново.

import re
for line in data :
    line = re.sub(r"(905) ", "905-", line)
    print(line)

Но это не работает. Как его заменить?

Ответы [ 3 ]

2 голосов
/ 01 апреля 2019

Если все, что вам нужно, это простая замена, то вам не следует использовать re:

line = line.replace("(905) ", "905-")

Если вам нужно заменить больше префиксов, чем просто 905 , только тогда вам нужны регулярные выражения:

line = re.sub(r"\((\d{3})\) ", r"\1-", line)

Это также заменит (204) 342-4532 на 204-342-4532.

0 голосов
/ 01 апреля 2019

Вам нужно избегать скобок, потому что они являются специальными символами:

for line in data :
    line = re.sub("\(905\) ", "905-", line)
    print(line)

Вывод:

9    7   316 Lake St     Arran Dr    St. Catharines, ON L2N 4H4     Phone:  905-934-5885    112.9   123 130 --- 1/1/18
10   Esso    142 Lakeshore Rd    Geneva St   St. Catharines, ON L2N 2T5 Phone:  905-646-4558    112.7   125.9   131.9   --- 1/1/18
11   Petro-Canada    533 Lake St     Linwell Rd  St. Catharines, ON L2N 4H6 Phone:  905-937-7719  112.9   125.9   131.9   124.9   1/1/18
0 голосов
/ 01 апреля 2019

Избавьтесь от скобок в RE, как это

re.sub(r"\(905\) ", "905-", line)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...