我正在使用一个 API 将 LaTeX 转换为 PNG 格式。我正在转换的latex字符串是用latex, .tex写的,所以它们使用了诸如"\n "这样的短语。
我有一个字符串的例子是
query = "$\displaystyle \binom n r = \dfrac{n!}{r!(n-r)!}$"
然而,Python 识别了 \b
在 \binom
因此,该字符串被识别为有换行符,尽管我希望它只识别单个字符。
如果可能的话,我希望不需要修改字符串本身,因为字符串也是从API中获取的。那么有什么办法可以忽略这些字符串的字元,比如"\b "或"\n"?
使用 r"$\displaystyle \binom n r = \dfrac{n!}{r!(n-r)!}$"
. 这就是所谓的 原弦. 你可以阅读更多关于它 此处
一般来说,你可以使用以下格式的原始字符串。
正常的字符串。
'Hi\nHow are you?'
输出。
Hi
How are you?
Raw string:
r'Hi\nHow are you?'
输出:
Hi\nHow are you?
我已经更新了我的答案,以使其更加清晰。
如果字符串直接来自于API,那么它应该已经是原始格式(或者是你可以访问的最原始的格式),如 r"$\displaystyle \binom n r = \dfrac{n!}{r!(n-r)!}$"
. 因此,Python 不会假设有转义字符,也就不会有问题。
回答您的另一个关于原始字符串的问题 - 要在 Python 中以原始字符串的形式打印一个字符串,请尝试使用以下方法 repr
函数,它返回给定对象的可打印表示字符串。
query = "$\displaystyle \binom n r = \dfrac{n!}{r!(n-r)!}$"
print(repr(query))
下面是输出结果。'$\\displaystyle \x08inom n r = \\dfrac{n!}{r!(n-r)!}$'
注意,在真实的原始数据中 query
上边 \b
字符在技术上仍然存储为 \b
编码 \x08
),而不是作为两个独立的角色。为什么不是 \d
你可能会问,作为编码存储?因为 \d
不是一个有效的编码转义序列,所以它被忽略了,Python会将 \
作为一个字符。(啊......默默地忽略解析错误,这难道不是我们喜欢 Python 的原因吗?)
那么这个例子呢?
query = r"$\displaystyle \binom n r = \dfrac{n!}{r!(n-r)!}$"
print(repr(query))
看起来不错,但是等一下,Python 打印了 '$\\displaystyle \\binom n r = \\dfrac{n!}{r!(n-r)!}$'
.
为什么 \\
? 好吧,这个... repr
函数返回一个给定对象的可打印表示字符串,因此为了避免任何混淆,函数的 \
字符用 \
,创建 \\
.
所有这些绕了一圈又回到了你的问题上--如果一个字符串的值直接来自于API调用,那么字符串数据应该已经从二进制编码翻译过来了,像转义序列这样的东西不应该是个问题(因为原始数据中没有)。但是在你提供的例子中,你在一个字符串中声明了一个 query = "st\ring"
格式,不幸的是,这并不等同于从API中检索字符串,明显的解决方案是使用 query = r"st\ring"
格式。