2016-04-08 15 views
0

meine Frage klingt dumm aber gibt es etwas, das nicht funktioniert mit Python 3.x und re? Weil dieser einfache Code falsch zu sein scheint, druckt er nicht "(026) 660 68 21" auf meiner Konsole. Kann mir jemand helfen?Re funktioniert nicht richtig in Python

import re  
word = "Tél : (026) 660 68 21" 
w = re.sub("Tél : ", "", word, count=1) 
print(w) 
+1

Arbeiten auf meiner Konsole. Python 3.4.3, Ubuntu Kylin. –

+0

Versuchen Sie es mit Nicht-Unicode-Zeichen, z. Was bringt dir 're (6," ", word, count = 1)? –

+2

Warum verwenden Sie re? An erster Stelle? 'w = word.replace (" Tél: "," "))'. Auch wenn das Sub nicht funktioniert, haben Sie höchstwahrscheinlich ein Codierproblem –

Antwort

1

Ich kann das Problem mit dem Code aus Ihrer Frage nicht reproduzieren.

Aber was Sie vielleicht passieren sehen, zum Beispiel, wenn die E aigu Zeichen in einer anderen Form ist:

>>> word = "Tél : (026) 660 68 21" 
>>> substring = "Tél : " 
>>> re.sub(substring, "", word, count=1) 
'Tél : (026) 660 68 21' 

Das Update:

>>> from unicodedata import normalize 
>>> def n(str_, form='NFC'): 
     return normalize(form, str_) 
... 
>>> re.sub(n(substring), "", n(word), count=1) 
'(026) 660 68 21' 
+0

Auch möglich, einer der Whitespaces ist möglicherweise nicht U + 0020, aber jeder von [diese] (https://codpoints.net/search?gc=Zs) (klassisch U + 00A0). Und wenn jemand einen Streich gezogen hat, ist der Doppelpunkt [dies] (https://codpoints.net/U+2236). – Boldewyn

+0

Ich dachte auch über die e aigu nach, weil die Zeichenkette durch Datenverschrottung erzeugt wird, also wahrscheinlich das Problem. Aber dein Code funktioniert nicht für mich .. aber danke für die Intuition, ich werde auf dieser Seite nachsehen – jjyoh