Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x Can';不要代替美元符号_Python 3.x_Regex - Fatal编程技术网

Python 3.x Can';不要代替美元符号

Python 3.x Can';不要代替美元符号,python-3.x,regex,Python 3.x,Regex,我正在尝试编写一个python脚本,将普通文本转换为latex代码。所以我必须分别用\$、\&和\%替换$、&和%。此外,由于文本是从Wikipedia复制的,我必须用空白字符串替换方括号内的内容。这是我的密码: import re square_bracket = r"\[[^\]]*\]" def formatting(text): no_brackets = re.sub(square_bracket, '', text) and_ = re.sub('&',

我正在尝试编写一个python脚本,将普通文本转换为latex代码。所以我必须分别用\$、\&和\%替换$、&和%。此外,由于文本是从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]

我可以接受方括号,&和%。但美元符号将普通文本转换为latex中的数学论点,这使得事情变得混乱。如何修复此问题?

在正则表达式中,
$
是一个结束锚,因此需要转义它:

dollar_ = re.sub('\$', '\\\\$', percentage_)
#                 ^
#                here
如果您这样做,输出将是您期望的:

aca \& akhil 56 \\$ 72 \%

在正则表达式中,
$
是一个结束锚点,因此需要对其进行转义:

dollar_ = re.sub('\$', '\\\\$', percentage_)
#                 ^
#                here
如果您这样做,输出将是您期望的:

aca \& akhil 56 \\$ 72 \%

谢谢成功了。但是“\S”创建了无效的转义序列“\$”。我可以用“\\$”来解决这个问题。谢谢。成功了。但是“\S”创建了无效的转义序列“\$”。我可以用“\\$”来解决这个问题。