python字符串中的多个唯一替换

时间:2017-07-27 11:48:58

标签: python string replace

我想通过查找替换使用unicode字符的分数,如果它在字典中但是找不到方法。

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

我目前的解决方案显然不好

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

fix_fraction的输入可能会将文字混入未知位置,因此我不能将分数拆分出来,而且我无法成功写出regex

样本用法:

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

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

字典预计不会超过100个条目,但也欢迎支持任何分数的终极解决方案。

知道怎么做才能正确吗?

1 个答案:

答案 0 :(得分:1)

一种可能的方法是循环遍历fixs并替换循环中文本中的项目:

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'