2016-07-19 24 views
1

Ich habe eine Datei wie:Entfernen von Symbolen aus Zeichenfolge

@HWI 
ABCDE 
+ 
@HWI7 
EFSA 
+ 
???=AF 
[email protected] 
GVTAWM 

ich nur die Saiten halten wollen (so alles entfernen, die ein Symbol enthält)

Ich habe versucht:

import numpy as np 
arr = np.genfromtxt(f, dtype=str) 

for line in np.nditer(arr): 
    if np.core.defchararray.isupper(line) and not '@?=;?+' in line: 
     print line 

aber es gibt:

@HWI 
ABCDE 
@HWI7 
EFSA 
???=AF 
[email protected] 
GVTAWM 

und ich erwarte:

Ich möchte numpy für diese und nicht Befehle wie Regex oder ähnliches verwenden.

+1

Mögliches Duplikat (http://stackoverflow.com/questions/875968/how -zum-entfernen-symbole-from-a-string-with-python) –

+0

@AlexRosenfeld: Hallo, ich möchte numpy dafür verwenden. – George

+0

danke für das Hinzufügen dieser Frage –

Antwort

1

Diese ist meine Lösung:

import numpy as np 

arr = np.genfromtxt('text.txt', dtype=str) 

test = np.core.defchararray.isalpha(arr) #Create a mask : True = only str and False = not only str 

print arr[test] #Use the mask on arr and it will print only good values 

Verwenden Sie nicht if mit numpy! Sie haben die Indizierung, das zu tun;)

ich: [? Wie Symbole aus einem String mit Python entfernen]

['ABCDE' 'EFSA' 'GVTAWM'] 
0

W/numpy:

Es gibt eine isalpha() und IsNumeric (Funktion) wie auch NumPy. Sie können über here gelesen werden.

Ohne numpy, könnten Sie diese Regex versuchen:

re.sub(r'[^\w]', ' ', s)

wo s Zeichenfolge ist und [^\w] wird alles akzeptiert, die nicht alphanumerische ist oder unterstreichen

Ein Beispiel auf Stackoverflow

+0

Ich benutze numpy.Ich möchte nicht Regex – George

+1

In Ordnung, sollten Sie die Anforderungen in der Frage angeben. –

Verwandte Themen