【问题标题】:I want to print the "\" character in python but I get "\\"我想在 python 中打印“\”字符,但得到“\\”
【发布时间】:2018-08-21 23:21:54
【问题描述】:

我有一个带有000_S_0000 格式的python 字符串列表。由于我希望将此列表显示在 LaTeX 文档中,因此我想首先将其保存在 .txt 文件中,对其每个字符串使用不同的格式,特别是这个:000\_S\_0000

但是,当我将修改后的列表写入 .txt 文件时,每个字符串的格式都改为000\\_S\\_0000

我该如何解决?为什么它不起作用?

提前致谢!

这是我的代码:

def posa_barres_latex(ll_PTIDs):
    for i in range(len(ll_PTIDs)):
        snou = ''
        for caracter in ll_PTIDs[i]:
            if caracter == "_":
                snou = snou + "\_"
            else:
                snou = snou + caracter
        ll_PTIDs[i] = snou
    with open("sortida_exclosos_criteri_c.txt","w") as f:
        f.write(str(ll_PTIDs))


posa_barres_latex(['002_S_2043', '018_S_2138', '013_S_2324', '129_S_4073', '002_S_4237', '019_S_4285', '130_S_4468', '136_S_4517', '013_S_4791', '031_S_4194','002_S_4219', '002_S_4251', '136_S_4408', '130_S_4605', '130_S_4925', '013_S_4985'])

附:我正在使用 python 3。

【问题讨论】:

  • print("000\\_S\\_000")print("000\_S\_000") 在我的 python 3.6 中都打印 000\_S\_000
  • 如果没有Minimal, complete, verifiable example,很难理解您的问题的详细信息。我们应该能够将您发布的代码粘贴到文本文件中并重现您描述的问题。
  • “当我尝试打印字符 \...” - 你究竟想如何打印它?显示执行此操作的代码。
  • @Prune,感谢您的建议。我已经修改它以满足这些要求,我希望:)
  • @americansanti -- 好多了;谢谢。我撤回了我的关闭投票并撤销了反对票。我也看到你有两个有价值的答案。

标签: python unicode character


【解决方案1】:

要使用打印命令打印单个“\”,只需使用: print('\\')

第一个'\' 转义第二个。

【讨论】:

    【解决方案2】:

    在这种情况下,您的 Python 版本很重要。

    但 '\' 是转义字符,它用于编码其他字符,例如 '\n' 是换行符。

    您可以将“\”转义为\\,它只会打印“\”。

    如果您使用包含大量字符串的字符串,则使用原始字符串可能更容易 - 只需在它们前面放一个 r。示例:

    print(r"000\_S\_000")

    将完全按照您键入的内容进行打印。

    【讨论】:

    • 谢谢,它只适用于打印一个字符,但递归地做却不行。如果我想将其保存在 .txt 文件中,我也不能。
    • 当你尝试这个时你会得到什么?您是使用原始字符串还是使用 `\\` 转义?
    • 当我使用我提供的代码时,我得到这个:['002\\_S\\_2043', '018\\_S\\_2138', '013\\_S\\_2324', '129\\_S\\_4073', '002\\_S\\_4237', '019\\_S\\_4285', '130\\_S\\_4468', '136\\_S\\_4517', '013\\_S\\_4791', '031\\_S\\_4194', '002\\_S\\_4219', '002\\_S\\_4251', '136\\_S\\_4408', '130\\_S\\_4605', '130\\_S\\_4925', '013\\_S\\_4985']
    • 这似乎是一个列表的代表。尝试打印列表中的每个项目,它可能看起来很正常。
    • 另外,您不需要遍历整个列表并每次都重写它,请尝试使用 str.replace('_', r'\_') 代替。
    猜你喜欢
    • 2022-07-26
    • 1970-01-01
    • 2014-11-19
    • 1970-01-01
    • 2019-04-30
    • 1970-01-01
    • 2019-10-20
    • 2018-01-21
    • 2013-06-07
    相关资源
    最近更新 更多