2017-07-27 2 views
0

Ich möchte Bruch durch Unicode-Zeichen durch Nachschlagen ersetzen, wenn es im Wörterbuch aber nicht den Weg finden, es zu tun.Mehrere eindeutige Ersetzungen in einer Python-Zeichenfolge

fixs = { 
    '1/2': '¹⁄₂', 
    '1/4': '¹⁄₄', 
    '3/8': '³⁄₈', 
    ... 
    # '': '⁰¹²³⁴⁵⁶⁷⁸⁹⁄₀₁₂₃₄₅₆₇₈₉', 
} 

Meine aktuelle Lösung ist offensichtlich schlecht

def fix_fraction(string): 
    return string.replace('1/2', '¹⁄₂').replace('1/4', '¹⁄₄').replace('3/8', '³⁄₈') 

Die Eingabe von fix_fraction könnte Text hat mit unbekannter Position mischte, so kann ich nicht nur die Fraktion aus gespalten und ich kann regex nicht erfolgreich schreiben .

Verwendungsbeispiel:

print(fix_fraction('item A d=1/2″')) 
print(fix_fraction('item B d=3/8 m')) 

item A d=¹⁄₂″                                               
item B d=³⁄₈ m 

Wörterbuch wird voraussichtlich nicht mehr als 100 Einträge haben, aber ultimative Lösung, die jede Fraktion unterstützt wird auch begrüßt.

Irgendeine Idee, wie man das richtig macht?

+0

Es kann mit Unicode-Tief- und Hoch geschehen, so etwas wie: unichr (0x2070 + v) wo v ist eine Ziffer. – axaroth

Antwort

1

Ein möglicher Ansatz ist, einfach Schleife über Ihre fixs und ersetzen Elemente im Text innerhalb der Schleife:

In [938]: text = 'item B d=3/8 m' 

In [939]: for k in fixs: 
    ...:  text = text.replace(k, fixs[k]) 
    ...:  

In [940]: text 
Out[940]: 'item B d=³⁄₈ m' 
Verwandte Themen