如何阻止Python识别诸如“\n”或“\b”之类的字符串文字?

2024-09-30 01:25:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用API将LaTeX转换为PNG格式。我正在转换的latex字符串是用latex、.tex编写的,因此它们使用诸如“\n”之类的短语

我有一个字符串的例子是

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

但是,Python识别\binom中的\b,因此字符串被识别为具有换行符,尽管我只想让它识别单个字符

如果可能的话,我不想修改字符串本身,因为字符串也是从API获取的。那么,是否有任何方法可以忽略这些字符串文字,例如“\b”或“\n”


Tags: 方法字符串apipng格式query字符例子
2条回答

使用r"$\displaystyle \binom n r = \dfrac{n!}{r!(n-r)!}$"。这称为原始字符串。您可以阅读更多关于它的信息here

通常,可以使用以下格式的原始字符串:

正常字符串:

'Hi\nHow are you?'

输出:

   Hi
   How are you?

原始字符串:

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"格式

相关问题 更多 >

    热门问题