2013-06-01 75 views
2

閱讀「學習Python的辛苦」,我玩練習10這條新線從哪裏來?

tabby_cat = "\tI'm tabbed in." 
persian_cat = "I'm split\non a line." 
backslash_cat = "I'm \\ a \\ cat." 

fat_cat = """ 
I'll do a list: 
\t* Cat food 
\t* Fishies 
\t* Catnip\n\t* Grass 
""" 

print tabby_cat 
print persian_cat 
print backslash_cat 
print fat_cat 

這將產生以下的輸出:

I'm tabbed in. 
I'm split 
on a line. 
I'm \ a \ cat. 

I'll do a list: 
    * Cat food 
    * Fishies 
    * Catnip 
    * Grass 

我的問題是:爲什麼存在之間的新線第三和第四個打印的字符串?我該如何刪除它?

回答

8
fat_cat = """ <-- here? 
I'll do a list: 

也就是說,

fat_cat = """I'll do a list: 
... 

刪除。

+0

親愛特此,謝謝。有一種方法可以在多行上打印字符串而不需要引入新行? – agtortorella

+1

@Giuseppe:AFAIK不是直接的,你可以使用「第一長部分」+(新線)「第二長線」+(新線)等等。 – 2013-06-01 16:37:24

+0

或者你可以首先從字符串中去掉前導和尾隨的空格:'print(someString.strip())';或者如果你只是想剝離換行'print(someString.strip('\ n'))''。 – poke

5

因爲print總是把一個換行符(默認),原因你已經得到了第三和第四之間的另一個新的生產線是它含有上述明確\n

print fat_cat, 

抑制隱含的換行最終輸出。

+0

不正確,第三個字符串不以明確的'\ n'結尾(第四個字符串,但這不是問題的一部分)。 – 2013-06-01 16:40:07

+0

@herby如果我們採用邏輯線,那麼最後一個包含'\ n' –

2

您也可以跳過多行字符串中的新行。

比較這些

fat_cat = """ 
I'll do a list: 
\t* Cat food 
\t* Fishies 
\t* Catnip\n\t* Grass""" 

print '=====',fat_cat 

fat_cat = """\ 
I'll do a list: 
\t* Cat food 
\t* Fishies 
\t* Catnip\n\t* Grass""" 

print '=====',fat_cat 

\逃逸的第一個換行符。

你也可以這樣做:

txt='''\ 
1\ 
2\ 
3\ 
4\ 
''' 

print txt 

,它將打印1234因爲字符串txt中的所有\n已經逃脫\

最後,您可能會對如何僅打印行如果它們包含除空白以外的內容感興趣。這裏是一個演示:

txt=''' 
1 
\t 
2 
\n\n\n\n\n\n 
3 

4 
''' 

print '\n'.join(line for line in txt.splitlines() if line.strip()) 

它打印:

1 
2 
3 
4 
+0

謝謝drweck,順便說一句,我也在尋找python中轉義序列的例子,所以我已經學會了「\」。 – agtortorella