簡體   English   中英

這條新線從何而來?

[英]Where do this new line come from?

閱讀“艱難學習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

我的問題是: 為什么在第三個和第四個打印的字符串之間有一個新的行? 我該如何刪除它?

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

那是,

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

刪除它。

因為print總是放一個換行符(默認情況下),所以你在第3和第4行之間有另一個新行的原因是它包含一個明確的\\n

print fat_cat,

以上內容抑制了最終輸出的隱式換行符。

您還可以轉義多行字符串中的新行。

比較這些

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM