首页 > 解决方案 > 不能替换美元符号

问题描述

我正在尝试编写一个将普通文本转换为乳胶代码的 python 脚本。所以我必须分别用\$、\& 和\% 替换$、& 和%。此外,由于文本是从 Wikipedia 复制的,因此我必须用空白字符串替换方括号内的内容。这是我的代码:

import re
square_bracket = r"\[[^\]]*\]"


def formatting(text):
    no_brackets = re.sub(square_bracket, '', text)
    and_ = re.sub('&', '\\&', no_brackets)
    percentage_ = re.sub('%', '\\%', and_)
    dollar_ = re.sub('$', '\\$', percentage_)
    return dollar_


print(formatting("aca & akhil[3255d] 56 $ 72 %"))

输出是:

[Command: python3 -u /home/aca/Documents/python/basics/test.py]
aca \& akhil 56 $ 72 \$
[Finished in 0.131s]

我可以接受方括号、& 和 %。但是美元符号使事情变得混乱,因为它将普通文本转换为乳胶中的数学参数。我该如何解决?

标签: python-3.xregex

解决方案


在正则表达式中,$是一个结束锚点,所以你需要转义它:

dollar_ = re.sub('\$', '\\\\$', percentage_)
#                 ^
#                here

如果你这样做,输出将是你所期望的:

aca \& akhil 56 \\$ 72 \%

推荐阅读