it-swarm.com.de

Nicht numerische Zeichen aus einer Zeichenfolge entfernen

Ich habe die Aufgabe erhalten, alle nicht numerischen Zeichen einschließlich Leerzeichen aus einer Textdatei oder einer Zeichenfolge zu entfernen und dann das neue Ergebnis neben den alten Zeichen auszudrucken. Beispiel:

Vor:

sd67637 8

Nach:

sd67637 8 = 676378

Als Anfänger weiß ich nicht, wo ich mit dieser Aufgabe anfangen soll. Bitte helfen Sie

36
Obcure

Der einfachste Weg ist mit einem regulären Ausdruck

import re
a = 'lkdfhisoe78347834 (())&/&745  '
result = re.sub('[^0-9]','', a)

print result
>>> '78347834745'
63
mar mar

Durchlaufen Sie Ihre Zeichenfolge, Zeichen für Zeichen, und geben Sie nur Ziffern ein:

new_string = ''.join(ch for ch in your_string if ch.isdigit())

Oder verwenden Sie einen regulären Ausdruck für Ihre Zeichenfolge (wenn Sie nicht zusammenhängende Gruppen irgendwann separat behandeln möchten) ...

import re
s = 'sd67637 8' 
new_string = ''.join(re.findall(r'\d+', s))
# 676378

Dann einfach print raus:

print(old_string, '=', new_string)
18
Jon Clements

Dafür gibt es ein builtin .

string.translate (s, table [ deletechars])

Löschen Sie alle Zeichen aus s, die sich in deletechars befinden (falls vorhanden), und übersetzen Sie die Zeichen dann mithilfe der Tabelle. Dabei muss es sich um eine 256-stellige Zeichenfolge handeln, die die Übersetzung für jeden Zeichenwert angibt, der durch seine Ordnungszahl indiziert wird. Wenn die Tabelle "Keine" ist, wird nur der Zeichenlöschschritt ausgeführt.

>>> import string
>>> non_numeric_chars = ''.join(set(string.printable) - set(string.digits))
>>> non_numeric_chars = string.printable[10:]  # more effective method. (choose one)
'sd67637 8'.translate(None, non_numeric_chars)
'676378'

Oder Sie könnten es ohne Importe tun (aber es gibt keinen Grund dafür):

>>> chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>[email protected][\\]^_`{|}~ \t\n\r\x0b\x0c'
>>> 'sd67637 8'.translate(None, chars)
'676378'
10
Inbar Rose

Sie können string.ascii_letters um Ihre Nicht-Ziffern zu identifizieren:

from string import *

a = 'sd67637 8'
a = a.replace(' ', '')

for i in ascii_letters:
    a = a.replace(i, '')

Wenn Sie einen Doppelpunkt ersetzen möchten, verwenden Sie Anführungszeichen " anstelle von Doppelpunkten '.

2