【问题标题】:How to save escape sequences to a file in python without double backslashes?如何在没有双反斜杠的情况下将转义序列保存到python中的文件中?
【发布时间】:2020-03-11 08:51:17
【问题描述】:

我想将一些 mathjax 代码保存到 python 中的 .txt 文件中。

x = "$\infty$"
with open("sampletext.txt", "a+") as f:
    f.write(x)

完全按预期工作

sampletext.txt

$\infty$

但是,当我尝试将转义序列保存在列表中时

x = ["$\infty$"]
with open("sampletext.txt", "a+") as f  :
    f.write(str(x))

sampletext.txt

['$\\infty$']

如何删除后者中的双反斜杠并将其另存为['$\infty$']

【问题讨论】:

  • 您编写列表的表示形式,这就是它的样子。你必须做类似f.write(f'[{x[0]}]')(未经测试)的事情。另一方面,如果您真的想存储列表,您可能需要考虑将数据保存为 JSON。
  • @Matthias 我试过 json.dump() 并将其转换为双斜杠:/

标签: python string file-handling


【解决方案1】:

也许这可以帮助你:

x = [r"$\infty$"]
with open("sampletext.txt", "a+") as f:
    f.write(''.join(x))

标志“r”(原始)可用于保存带有“\”等特殊符号的字符串

或者如果您不知道列表中有多少项:

x = ["$\infty$"]
with open("sampletext.txt", "a+") as f:
    f.write(f"{''.join(x)}")

【讨论】:

  • r 在第二个示例中什么也不做。那里没有任何转义码可以禁用转义!这只是在做f.write(''.join(x))。甚至:for s in x: f.write(s)
  • 我想写['$\infty$'],而不是$\infty$。这怎么可能?
【解决方案2】:

试试这个:

x = [r"$\infty$"]
with open("sampletext.txt", "a+") as f:
    f.write(str(x))

r 表示该字符串将被视为原始字符串,这意味着所有转义码都将被忽略。

【讨论】:

  • 您遗漏了list 部分。
猜你喜欢
  • 1970-01-01
  • 2021-06-19
  • 2015-09-14
  • 1970-01-01
  • 1970-01-01
  • 2017-04-13
  • 2019-10-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多