2016-05-16 2 views
0

Ich versuche, in einer einzelnen Zeile eine Zeichenfolge gefolgt von einem Leerzeichen und dann von einer Nummer zu drucken. Die Zeichenfolge stammt aus einer langen Liste in Unicode, und einige von ihnen (aber nicht alle) haben das Format von rechts nach links. Mein Problem ist, dass die Reihenfolge, die ich will, umgekehrt ist, wenn ich Zeichenfolgen in diesem Format verwende.So drucken und beibehalten von links nach rechts Reihenfolge mit Unicode

Hier ist ein minimales Arbeitsbeispiel:

line1='abcd' 
line2='אבגד' 
print line1+' '+str(1) 
print line2+' '+str(1) 

Die ouput ist

abcd 1 
אבגד1 

der erste Ausgang in der gewünschten Reihenfolge, aber die zweiten nicht. Gibt es eine Möglichkeit, diese Umkehrung zu vermeiden?

Außerdem muss ich nur die Python Standard Library verwenden.

Antwort

0

Fügen Sie eine Markierung von links nach rechts (dargestellt als u '\ u200e') am Anfang der Zeichenfolge ein, die Sie drucken. Dies ist ein unsichtbares Zeichen, das die Richtung des Textes erzwingt, so dass es keinen negativen Einfluss auf Text hat, der bereits auf diese Weise gedruckt werden soll. Der folgende Code erzeugt die gewünschte Ausgabe:

print u'\u200E'+line1+' '+str(1) 
print u'\u200E'+line2+' '+str(1) 

Weitere Informationen https://en.m.wikipedia.org/wiki/Left-to-right_mark

+0

Zuerst sehe ich dachte, dass ich zuerst herausfinden, müssten die Saiten in rechts-nach-links-Sprachen waren, aber es stellt sich heraus, dass ich kann dieses Zeichen allen Strings ohne negative Nebenwirkungen hinzufügen. Auch durch Tests habe ich herausgefunden, dass es _before_ sein muss, nicht nach den Strings. Ich könnte eine umfassendere Antwort darauf basierend veröffentlichen, aber ich bin mir nicht sicher, ob es eine gute Etikette wäre. –

Verwandte Themen