为了账号安全,请及时绑定邮箱和手机立即绑定

如何阻止 Python 识别字符串文字,例如“\n”或“\b”?

如何阻止 Python 识别字符串文字,例如“\n”或“\b”?

FFIVE 2022-12-20 15:21:47
我正在使用 API 将 LaTeX 转换为 PNG 格式。我正在转换的乳胶字符串是用乳胶、.tex 编写的,因此它们使用诸如“\n”之类的短语。我拥有的字符串示例是query = "$\displaystyle \binom n r = \dfrac{n!}{r!(n-r)!}$"然而,Python 识别\bin \binom,因此字符串被识别为有换行符,即使我想要它做的只是识别单个字符。如果可能的话,我不想修改字符串本身,因为字符串也是从 API 中获取的。那么有没有什么办法可以忽略这些字符串字面量,比如'\b'或'\n'呢?
查看完整描述

2 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

使用r"$\displaystyle \binom n r = \dfrac{n!}{r!(n-r)!}$"。这称为原始字符串。你可以在这里阅读更多相关信息

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

普通字符串:

'Hi\nHow are you?'

输出:

   Hi
   How are you?

原始字符串:

r'Hi\nHow are you?'

输出:

   Hi\nHow are you?


查看完整回答
反对 回复 2022-12-20
?
阿晨1998

TA贡献2037条经验 获得超6个赞

为了清楚起见,我已经更新了我的答案。

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


查看完整回答
反对 回复 2022-12-20
  • 2 回答
  • 0 关注
  • 82 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信