2009-10-05 58 views
28

該功能如何更改爲返回"123456"Python的三引號字符串是如何工作的?

def f(): 
    s = """123 
    456""" 
    return s 

UPDATE:每個人的問題是關於理解具有多行註釋的時候,而不是如何使用re模塊怎麼沒有\ T或什麼的。

+2

這是功課? 提示:你的字符串是「123 <一些空白> 456」 – 2009-10-05 14:53:07

+7

這不是家庭作業。我試圖理解'''''是如何工作的 – 2009-10-05 15:10:12

+0

但是我怎麼沒有它? – 2009-10-05 15:12:40

回答

50

當您不需要額外的空格,製表符和換行符時,不要使用三引號字符串。

使用隱延續,它更優雅:

def f(): 
    s = ('123' 
     '456') 
    return s 
+1

這個用法對我來說很自然,但當我不得不插入變量值時一個例如:%s,但唉,甚至以下作品: 's =('String%s'' ''String%s')%('foo','bar')' – Spade 2014-12-15 08:41:00

6

也許我缺少這個東西很明顯,但什麼:

def f(): 
    s = """123456""" 
    return s 

或簡單:

def f(): 
    s = "123456" 
    return s 

或更簡單:

def f(): 
    return "123456" 

如果還是不行回答你的問題,然後請澄清問題是關於什麼。

+0

關於理解如何在有多行註釋時沒有\ t或其他任何東西。 – 2009-10-05 15:11:27

+9

三重引號字符串不是多行註釋,它是一個原始字符串,並且完全包含您鍵入的內容。 – JimB 2009-10-05 15:20:58

+0

我站好了。 – 2009-10-05 22:06:28

-1
re.sub('\D+', '', s) 

將返回一個字符串,如果你想要一個整數,轉換在此字符串int

-1

嘗試

import re 

然後

return re.sub("\s+", "", s) 
-4

我的猜測是:

def f(): 
    s = """123 
    456""" 
    return u'123456' 

最小變化和做什麼的要求。

+7

:-)誰downvoted這個沒有幽默感 – foosion 2009-10-05 17:20:49

+0

可能downvoted,因爲該函數應該返回一個字符串。 – recursive 2009-10-05 17:28:40

+0

你是對的,它可能必須返回一個字符串,我返回一個整數,無論​​如何,我也沒有得到downvoted的東西,我是新的python – Juparave 2009-10-05 17:47:49

16
def f(): 
    s = """123\ 
456""" 
    return s 

不要在第一行之後縮進任何blockquote行;用反斜槓結束除最後一行以外的每一行。

+1

+1:即使我不喜歡bashslashes:可以使用replace('\ n','') – van 2009-10-05 17:52:55

+0

...而不是{{{return s.replace('\ n','') n','')}}},而是在賦值本身中:{{{456「」「。replace('\ n','')}}} – van 2009-10-05 17:56:30

14

隨後的字符串連,所以你可以使用:

def f(): 
    s = ("123" 
     "456") 
    return s 

這將讓你保持縮進,只要你喜歡。

+0

+1 - 打我吧 – PaulMcG 2009-10-05 19:18:35

+0

OP - 「123」和「456」之間沒有逗號,()的使用是爲了避免必須使用'\'作爲連續線 – PaulMcG 2009-10-05 19:19:34

9
textwrap.dedent("""\ 
       123 
       456""") 

從標準庫。首先「\」是必要的,因爲此功能通過刪除共同的前導空格來工作。

+0

不回答問題,但確實回答谷歌查詢!實際上問:http://stackoverflow.com/questions/1412374/python-triple-quote-multi-line-indentation – 2017-01-26 09:45:21

0

你可能要檢查這個str.splitlines([keepends])

返回字符串中的行的列表,在破線邊界。 此方法使用通用換行符方法來分割線。 換行符不包含在結果列表中,除非給出並確實爲 。

Python將「\ r」,「\ n」和「\ r \ n」識別爲8位字符串的行邊界。

因此,對於手頭的問題...我們可以做服用點這樣的..

>>> s = """123 
... 456""" 
>>> s 
'123\n456' 
>>> ''.join(s.splitlines()) 
'123456' 
相關問題