如何阻止Python识别字符串字元,如"\n "或"\b"?

问题描述 投票:1回答:1

我正在使用一个 API 将 LaTeX 转换为 PNG 格式。我正在转换的latex字符串是用latex, .tex写的,所以它们使用了诸如"\n "这样的短语。

我有一个字符串的例子是

query = "$\displaystyle \binom n r = \dfrac{n!}{r!(n-r)!}$"

然而,Python 识别了 \b\binom 因此,该字符串被识别为有换行符,尽管我希望它只识别单个字符。

如果可能的话,我希望不需要修改字符串本身,因为字符串也是从API中获取的。那么有什么办法可以忽略这些字符串的字元,比如"\b "或"\n"?

python string string-literals
1个回答
3
投票

使用 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?

2
投票

我已经更新了我的答案,以使其更加清晰。

如果字符串直接来自于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" 格式。

© www.soinside.com 2019 - 2024. All rights reserved.