2011-09-20 205 views
9

嗨我想要一个字符串包含单引号和双引号在Python - ('“)。我需要这个表达式的原因是作为一个输入到一些外部的批处理命令,但是python总是自动纠正(\'“)。我想知道是否有办法将双引号和单引号放在一起。谢谢。在Python字符串中有单引号和双引号

+0

你的意思是说,当你打印它时,或只有当你在解释器中看它时,反斜杠才会出现吗? –

+6

“python总是自动纠正”?哪里?怎么样?请'输出'输出**是肯定**你得到什么。请注意,你从'repr()'看到的东西以及你在'>>>'提示符处看到的内容与字符串中的**实际**不匹配。 'repr()'和'>>>'版本是Python源代码。不是实际值。请**通过具体的例子更新**你的问题。 –

回答

20

使用三重引号。

"""Trip'le qu"oted""" 

'''Ag'ain qu"oted''' 

请记住,只是因为Python repr是个字符串反斜杠,并不意味着它实际上添加任何斜线字符串,它可能只是呈现出特殊字符转义。

使用Python教程的例子:

>>> len('"Isn\'t," she said.') 
18 
>>> len('''"Isn't," she said.''') 
18 

即使第二个字符串,因为它没有一个反斜杠出现一个字符短,它实际上是相同的长度 - 反斜杠只是以避免单引号字符串中的单引号。

又如:

>>> for c in '''"Isn't," she said.''': 
...  sys.stdout.write(c) 
... 
"Isn't," she said. 
>>> 

如果你不让Python的格式化字符串,就可以看到该字符串还未改变,它只是Python的尝试明确地显示出来。

查看tutorial section on strings

+0

感谢您的回应。但是,当我键入s =“”“'”“”“,并且当我检查s的值时,它仍然显示'\'”'。我将这个字符串传递给命令行,所以它必须是''''。 – GHO

+0

@ GHO看到上面的S.Lott的评论。 –

+0

@GHO我想我在答案中解释得很好(我又增加了一个例子) - '\'实际上并不存在(在字符串中),Python只是用它来表示'''不会结束字符串,而不是开始和结束的字符串,它没有' t实际上改变你的字符串,它是如何显示的。 – agf

4

使用三引号字符串:

""" This 'string' contains "both" types of quote """ 
''' So ' does " this ''' 
+0

感谢您的回应。但是,我仍然有问题,因为我上面评论。顺便说一下,我使用python 2.7 – GHO

+2

@GHO:“仍然有问题”。意思是(1)在问题中发布实际代码;(2)从实际的'print'语句中发布实际输出;在问题中;(3)发布你实际得到的实际错误。 - 可悲的是 - 无法猜测你使用的是什么代码。 –

0

虽然它的更详细的, 另一种方法是做到以下几点:

STR1 =“有双‘S’,在它的一部分'

STR1 = STR1 +‘其具有单个零件‘

0

可以或者(1)用双引号括字符串,逃离斗在它s’的’ (2)用单引号将字符串括起来,用\转义单引号。例如:

>>> print('She is 5\' 6" tall.') 
She is 5' 6" tall. 
>>> print("He is 5' 11\" tall.") 
He is 5' 11" tall. 
1

实际的问题是,打印()语句不打印\但是当你是指在解释该字符串的值,它会显示一个“\”每当撇号用过的 。举例来说,请参考下面的代码:

>>> s = "She said, \"Give me Susan's hat\"" 
    >>> print(s) 
    She said, "Give me Susan's hat" 
    >>> s 
    'She said, "Give me Susan\'s hat"' 

这是无论你是否使用单,双或三引号内的字符串。

>>> s = """She said, "Give me Susan's hat" """ 
    >>> s 
    'She said, "Give me Susan\'s hat" ' 

另一种方式包括这样的:

>>> s = '''She said, "Give me Susan's hat" ''' 
    >>> s 
    'She said, "Give me Susan\'s hat" ' 
    >>> s = '''She said, "Give me Susan\'s hat" ''' 
    >>> s 
    'She said, "Give me Susan\'s hat" ' 

所以基本上,蟒蛇不会删除当你指的s的值,但删除它,当你尝试打印\。尽管如此,当您提到s的长度时,它不会计入“\”。 对于例如,

>>> s = '''"''"''' 
    >>> s 
    '"\'\'"' 
    >>> print(s) 
    "''" 
    >>> len(s) 
    4 
0

同时添加筛选Python的使用单点和双引号(转义)的报价。 试试这个,例如:

print(" just display ' and \" ") 

\"告诉巨蟒这不是引用字符串的结尾。

相关问题