1
votes

Remplacer une partie du tableau à l'aide de re

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

4 commentaires

Ce ne sont pas des informations privées, n'est-ce pas? Cela semble être du contenu accessible au public, mais je veux juste m'en assurer. Edit: Je me suis assuré qu'au moins l'adresse et le numéro de téléphone sont publics.


Pouvez-vous publier un code qui place les données que vous utilisez dans data ?


@wjandrea: "Plus maintenant."


@ScottHunter Enregistrez les données sous sample.txt , puis exécutez avec open ('sample.txt') sous f: data = f.read (). Splitlines () .


3 Réponses :


1
votes

Échappez les crochets dans RE comme ceci

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


0 commentaires

0
votes

Vous devez échapper les parenthèses car ce sont des caractères spéciaux:

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

Sortie:

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


0 commentaires

2
votes

Si tout ce que vous voulez est un simple remplacement, vous ne devriez pas utiliser re:

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

Si vous devez remplacer plus préfixes que 905 , alors seulement vous avez besoin d'expressions régulières:

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

Cela remplacerait également (204) 342-4532 par 204-342-4532 .


0 commentaires