使用re替换数组的一部分

时间:2019-04-01 19:01:48

标签: python list

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 个答案:

答案 0 :(得分:2)

如果您想要的只是简单的替换,那么您不应该使用re

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

如果您需要替换除905之外的更多前缀,则仅需要正则表达式:

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

这也将(204) 342-4532替换为204-342-4532

答案 1 :(得分:0)

像这样在RE中放括号

re.sub(r"\(905\) ", "905-", line)

答案 2 :(得分:0)

您需要对括号进行转义,因为它们是特殊字符:

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