2016-10-13 3 views
0

Für den folgenden Text ein:regulärer Ausdruck ersetzt keine Bindestriche mit Punkten

comment = """ I took the pill - I realized only side-effect after I went off it how it affected my eating habits - I put on weight - around 10 lbs - in the 2.5 months on it - no control and syndrome - this was counterproductive !""" 

I regulären Ausdruck replace hyphen (-) with dot (.)

comment = re.sub (r'(w+\s+)(-)(\s+\w+)', r'\1\. \3 ', comment) 

Aber es funktioniert nicht geschrieben.

Ich möchte nicht den Bindestrich zwischen zwei Wörtern wie Nebeneffekt durch Punkt ersetzen. das ist, warum ich nicht verwenden kann comment.replace ('-', '.')

Irgendwelche Vorschläge?

+3

Sie haben einen Tippfehler in der Regex verwenden könnte, [ '(\ w + \ + s) (-) (\ s + \ w +)'] verwenden (https: // regex101.com/r/mP2xSH/1) –

+0

.... und es gibt keine Notwendigkeit, Punkt in Ersetzungsstring zu entkommen – volcano

+0

@Wiktor Stribiżew, vielen Dank! – Mary

Antwort

4

Sie auch die str.replace Methode

comment.replace('-', '...') 
+1

UV für nicht mit einer Bazooka, um eine Fliege zu swat (das ist ein Französisch Ausdruck, ich hoffe, Sie bekommen es) und für das Denken außerhalb der Box. –

+1

@Patrick Haung, Aber Ihre Lösung wird Bindestrich mit Punkt in einigen Worten ersetzen, zum Beispiel: "Nebeneffekt". Ich will das nicht passieren. – Mary

+0

@Mary Wenn Sie nur nach Bindestrichen suchen, die von Leerzeichen umgeben sind, dann ersetzen Sie ''-'' durch'' - ''in obigem –