为何字符串替换在部分场景下不生效?以µ转micro为例
解决特定场景下µ到micro的替换失败问题
我需要将字符串中的µ替换为micro,部分场景替换正常(例如把20.0+-1.8% hemolysis at 50µM转为20.0+-1.8% hemolysis at 50microM),但在0% hemolysis at 312 to 0μg/ml这个场景下替换始终失败。
尝试过的无效方法
- 正则替换方案:
rep = {"±": "+-", "µ": "micro"} rep = dict((re.escape(k), v) for k, v in rep.items()) pattern = re.compile("|".join(rep.keys())) activity = pattern.sub(lambda m: rep[re.escape(m.group(0))], rows[i + 1].string.strip())
- 字符串直接替换方案:
activity = rows[i + 1].string.strip().replace('±','+-').replace('µ', 'micro')
最终解决方法
修改替换字典,同时包含µ和Unicode转义字符\u03BC的映射:
rep = {"±": " +- ", "µ": "micro", '\u03BC' : 'micro'}
之后结合之前的正则或直接替换逻辑,即可完成所有场景下的替换。
内容的提问来源于stack exchange,提问作者S.EB
相关产品推荐
相关产品推荐

