Ich brauche Hilfe bei der Deklaration eines regulären Ausdrucks. Meine Eingaben sind wie folgt:
this is a paragraph with<[1> in between</[1> and then there are cases ... where the<[99> number ranges from 1-100</[99>.
and there are many other lines in the txt files
with<[3> such tags </[3>
Die erforderliche Ausgabe ist:
this is a paragraph with in between and then there are cases ... where the number ranges from 1-100.
and there are many other lines in the txt files
with such tags
Ich habe das versucht:
#!/usr/bin/python
import os, sys, re, glob
for infile in glob.glob(os.path.join(os.getcwd(), '*.txt')):
for line in reader:
line2 = line.replace('<[1> ', '')
line = line2.replace('</[1> ', '')
line2 = line.replace('<[1>', '')
line = line2.replace('</[1>', '')
print line
Ich habe dies auch versucht (aber es scheint, als würde ich die falsche Regex-Syntax verwenden):
line2 = line.replace('<[*> ', '')
line = line2.replace('</[*> ', '')
line2 = line.replace('<[*>', '')
line = line2.replace('</[*>', '')
Ich möchte die replace
von 1 bis 99 nicht hart codieren . . .
where the<[99> number ranges from 1-100</[100>
?<...>
Tag entfernen , so dass die Ausgabe sein solltewhere the number rangers from 1-100 ?
Antworten:
Dieses getestete Snippet sollte es tun:
Bearbeiten: Hier ist eine kommentierte Version, die erklärt, wie es funktioniert:
Regexes machen Spaß! Ich würde jedoch dringend empfehlen, ein oder zwei Stunden mit dem Erlernen der Grundlagen zu verbringen. Für den Anfang müssen Sie lernen, welche Zeichen etwas Besonderes sind: "Metazeichen", die maskiert werden müssen (dh mit einem Backslash vorne - und die Regeln sind innerhalb und außerhalb der Zeichenklassen unterschiedlich). Es gibt ein ausgezeichnetes Online-Tutorial unter: www .regular-expression.info . Die Zeit, die Sie dort verbringen, macht sich um ein Vielfaches bezahlt. Viel Spaß beim Regexing!
quelle
str.replace()
macht feste Ersetzungen. Verwenden Siere.sub()
stattdessen.quelle
Ich würde so vorgehen (Regex in Kommentaren erklärt):
Wenn Sie mehr über Regex erfahren möchten, empfehle ich Ihnen, das Regular Expressions Cookbook von Jan Goyvaerts und Steven Levithan zu lesen .
quelle
*
anstelle von{0,}
{0,}
ist dasselbe wie*
,{1,}
entspricht+
und{0,1}
ist dasselbe wie?
. Es ist besser , zu verwenden*
,+
oder?
wenn Sie können, einfach weil sie kürzer und leichter zu lesen.Der einfachste Weg
quelle
<[^>]+>
? Übrigens: Ich denke, Ihre Regex würde zu viel passen (zB so etwas wie<html>
)Die Ersetzungsmethode für Zeichenfolgenobjekte akzeptiert keine regulären Ausdrücke, sondern nur feste Zeichenfolgen (siehe Dokumentation: http://docs.python.org/2/library/stdtypes.html#str.replace ).
Sie müssen
re
Modul verwenden:quelle
\d+
anstelle von[0-9]+
Sie müssen keinen regulären Ausdruck verwenden (für Ihre Beispielzeichenfolge)
quelle
quelle