2016-07-25 12 views
-1

Ich möchte die Anzahl der Buchstaben in einer gegebenen Zeichenfolge erhalten. Len (txt) gibt jedoch die Anzahl der Buchstaben in der Unicode-Form (ich denke), aber die tatsächliche Anzahl der Buchstaben ist weniger als das, was ich bekomme.Python 3 - Anzahl der Buchstaben in einem codierten String

zum Beispiel:

txt = שלום וברכה 
len(txt) # returns something different then 10 

sah ich eine Lösung für Python 2 string.decode verwenden, die in Python nicht verfügbar ist 3 - und ich bin nicht sicher, ob es die passende Antwort für mich ist. Übrigens ist die Codierung für die Zeichenfolge cp862.

EDIT: mehr Details: las ich aus einer Textdatei mit

with open(path, "r", encoding="cp862") as textFile: 

dies die Ausgabe der Zeile, die ich lesen, wenn ich es drucken

╫¬╫ñ╫¿╫ש╫ר ╫£╫ª╫ץ╫¥: ╫¢╫ת ╫¬╫ª╫£╫ק╫ץ ╫נ╫¬ ╫¢╫ש╫ñ╫ץ╫¿ 

Die Länge beträgt 52 Die echte Linie ist: פפפטט צצצם: כך צצצחח אא ככפפר und die tatsächliche Länge ist 29

+1

Auf repl.it bekomme ich:> len ("ששםם בבבככ") => 10. Vielleicht könnten Sie mehr Details über Ihre Plattform und Python-Version zur Verfügung stellen. – Yegers

+0

Ich bekomme dies: '> len ('ששםם בבבככ') >>> 10' – IsaacDj

+0

Geben Sie zumindest tatsächlichen gültigen Code, mit dem das Problem reproduzieren. Dieses Beispiel ist nicht einmal syntaktisch gültig. – deceze

Antwort

0

Wahrscheinlich, yo u sind mit dem falschen Codierungsschema die Datei zu öffnen, ist hier eine Demonstration:

>>> import sys 
>>> sys.version 
'3.4.3 (default, Oct 14 2015, 20:28:29) \n[GCC 4.8.4]' 
>>> 
>>> s = '╫¬╫ñ╫¿╫ש╫ר ╫£╫ª╫ץ╫¥: ╫¢╫ת ╫¬╫ª╫£╫ק╫ץ ╫נ╫¬ ╫¢╫ש╫ñ╫ץ╫¿' 
>>> len(s) 
52 
>>> 
>>> s = s.encode('cp862').decode('utf-8') 
'תפריט לצום: כך תצלחו את כיפור' 
>>> len(s) 
29 

Versuchen Sie es mit Standard-Kodierung zu öffnen (utf-8).

+0

Danke! das funktioniert. –

+0

@RonU ... Wenn Sie mit dieser Antwort zufrieden sind ... in Betracht ziehen, es zu akzeptieren. –