2011-09-20 202 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 \" ") 

\"告訴巨蟒這不是引用字符串的結尾。

相關問題