2017-10-23 2 views
1

Ich habe ein Datenframe, und ich möchte die eindeutigen Zeichenfolgen einer bestimmten Spalte. Die Strings sind auf Hebräisch.Entfernen von rechts nach links Zeichen u200f in Python (Hebräisch)

Da ich Pandas Dataframe verwende, schrieb ich: all_names = history.name.unique() (history ist der Datenrahmen mit einer name Spalte).

Ich bekomme seltsame Duplikate mit dem \u200f Zeichen. Wie ערן und ein weiteres mit dem \u200f

all_names 
array(['\u200fערן', 'ערן', ...., None], dtype=object) 

Wie kann ich diese Zeichen entfernen? (Von dem ursprünglichen Datenrahmen)

Antwort

2

können Sie löschen-up Ihre name Strings durch alle nicht-Buchstaben Ausfiltern und Nicht-Leerzeichen (Unicode-weise) durch apply ing eine re.sub -basierte Funktion auf alle Werte in den name Säule.

Beispiel (unter der Annahme, Python 3, die Unicode Verarbeitet):

>>> import re 
>>> history.name.apply(lambda s: s and re.sub('[^\w\s]', '', s)) 

Die \w includes all Unicode word characters (einschließlich Zahlen) und \s umfasst alle Unicode Leerzeichen. in der Codepoint Kategorie Unicode

By the way, die \u200f (auch bekannt als die RIGHT-TO-LEFT MARK), die Sie stört ist "Andere, Format":

>>> import unicodedata 
>>> unicodedata.name('\u200f') 
'RIGHT-TO-LEFT MARK' 
>>> unicodedata.category('\u200f') 
'Cf' 

so können Sie sicher sein, es mit der entfernt werden wird Filter oben.

Verwandte Themen