2017-03-15 3 views
-1

Wenn eine Zeichenfolge als Eingabe angegeben ist, möchte ich die Ganzzahlelemente der Zeile mit der Zeichenfolge num suchen und konvertieren. Hier ein Beispiel:Nummer durch Zeichenfolge in Textdatei ersetzen

Eingang:

"abc 123 def 1 in 1s and 100MB" 

Ausgang:

"abc >num<def>num< in 1s and 100MB" 

Wie kann ich es tun?

+2

Was ist die Frage? –

+0

nicht wahr? nicht sicher, was hier los ist – The4thIceman

+1

Es ist Programmiersprache auf höchstem Niveau :) – kimreik

Antwort

1

Verwenden a regular expression:

import re 

s = "abc 123 def 1 in 1s and 100MB" 

print(re.sub(r"\b\d+\b", ">num<", s)) 
# output: "abc >num<def>num< in 1s and 100MB" 

Der reguläre Ausdruck String r"\b\d+\b" eine Zeichenkette übereinstimmt, die durch die Wortgrenzen eingeschlossen mindestens ein numerischen Zeichens (\d+) (\b) besteht. Der \b Teil entspricht auch dem Anfang und dem Ende einer Zeichenfolge. Der Aufruf an re.sub() ersetzt alle Vorkommen einer übereinstimmenden Zeichenfolge im dritten Argument s durch das zweite Argument (">num<")

3

Das ist wie.

text_in = "abc 123 def 1 in 1s and 100MB" 
text_out = ' '.join(['>num<' if x.isnumeric() else x for x in text_in.split()]) 
print(text_out) # prints: abc >num<def>num< in 1s and 100MB 

nahm ich mir die Freiheit anzunehmen, dass Sie den Text aus einer Datei lesen können und auch den neuen Text in eine Datei schreiben, damit ich die Teile bin zu überspringen.

Es läuft alles auf die Verwendung von isnumeric().

Verwandte Themen