如何避免在字符串中打印带有特殊字符的反斜杠

时间:2018-07-13 13:44:20

标签: python string

我想要一个Siti's father says, "Hello."的输出。

但是,我最接近的是:

s = "Siti's father says, \"Hello\""

,其中s是包含所需输出的变量。

当我执行print("Siti's father says, \"Hello\"")并获得完美输出时会出现问题,但是当我将上述文本分配给变量s时,在定义s时会得到不同的输出。我得到:'Siti\'s father says, "Hello"'

假设我只能使用转义码来获得所需的输出,我应该改变什么以获得理想的输出?

2 个答案:

答案 0 :(得分:4)

当您显示变量或直接在Python shell中输入字符串时,它将用单引号引起来。

>>> "String"    
'String'

在显示字符串时,Python会将字符串中的单引号引起来,因为它是用单引号引起来的。否则,您将遇到类似这样的情况,并且不清楚字符串的结尾:

'John's potato farm'

当您打印时,它会如您所愿地出现在引号周围。

>>> s = "String"
>>> print(s)
String

要回答您的问题:完全按照您的要求创建字符串,然后将其打印出来。

s = "Siti's father says, \"Hello.\""
print(s)

答案 1 :(得分:4)

字符串表示形式和字符串的内容之间是有区别的。每当您print进行某些操作时,Python都会照原样输出字符串的内容。每当您检查值时(例如,仅在提示符下键入s或使用repr(s)),Python都会为您提供该值的表示;它试图为您提供一些您可以最好在Python源代码中使用的东西。示例:

>>> datetime.now()
datetime.datetime(2018, 7, 13, 15, 58, 37, 162588)

您可以在Python源代码中像这样使用datetime.datetime(2018, 7, 13, 15, 58, 37, 162588)来精确地重新创建此datetime对象。

对于字符串,其作用相同。 字符串文字 "Siti's father says, \"Hello\""创建一个具有 content Siti's father says, "Hello"的字符串。该字符串的表示形式可以是以下任意一种:

  • "Siti's father says, \"Hello\""
  • 'Siti\'s father says, "Hello"'
  • '''Siti's father says, "Hello"'''
  • 'Siti\x27s father says, "Hello"'
  • 许多其他可能性

Python为您提供了一种可能的表示形式,即 ,即单引号分隔的一种。