2016-04-20 9 views
0

Ich muss Wörter in einer riesigen Textdatei zählen, aber vorher muss ich die Datei von Sonderzeichen in einer bestimmten Weise reinigen.Entfernen Sie Sonderzeichen vom Anfang und Ende eines Wortes, während Sie die Wörter in einer Datei zählen

Zum Beispiel -

;xyz  -->  xyz  
xyz:  -->  xyz   
xyz!)  -->  xyz! 

Ich verwende flatMap() alle Wörter auf Raum zu teilen. Und dann versuche ich die Sonderzeichen zu entfernen, die nicht funktionieren. Bitte helfen Sie! Hier

ist der Code, ich verwende ---

Die Zeichen zu entfernen sind: -; ! ?().

>>> input = sc.textFile("file:///home/<...>/Downloads/file.txt") 
    >>> input2 = input.flatMap(lambda x: x.split()) 
    >>> def remove(x): 
      if x.endsWith(':'): 
       x.replace(':','') 
       return x 
      elif x.endsWith('.'): 
       x.replace('.','') 
       return x 

. .

 >>> input3 = input2.map(lambda x: remove(x)) 
+2

Warum funktioniert es nicht? Bitte posten Sie, was Sie versucht haben. –

+0

Im dritten Beispiel "!" Charakter ist kein spezielles Zeichen? – EbraHim

+0

Können Sie definieren, was Sonderzeichen sind? – Saleem

Antwort

1

Verwenden re.sub

re.sub(r'(?<!\S)[^\s\w]+|[^\s\w]+(?!\S)', '', f.read()) 

DEMO

0

Sie können eine Funktion schreiben, wenn ein Zeichen sieht gültig ist, dann verwenden filter():

def is_valid(char): 
    return char.isalpha() or char in "!,." # Whatever extras you want to include 

new_string = ''.join(filter(is_valid, old_string)) # No need to ''.join() in Python 2 
0

Versuchen Hilfe von regex bekommen :

Der obige Code liest Datei Zeile für Zeile und emittiert den bereinigten Inhalt. Je nach Inhalt der Datei wird es drucken:

xyz 
xyz 
xyz! 
0

Dies ist der Code, der für me-
def removefromstart (x) gearbeitet:
... für i in [ ':', '!' '?', '.', ')', '(', ';', ','):
... wenn x.startswith (i):
... token = x.replace (i , '')
... zurück Token
... return x
...

def removefromend(x): 
...   for i in [':','!','?','.',')','(',';',',']: 
...     if x.endswith(i): 
...       token = x.replace(i,'') 
...       return token 
...   return x 
Verwandte Themen