这条新线从何而来?

时间:2013-06-01 16:30:11

标签: python python-2.7

阅读“艰难学习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

我的问题是:为什么第三个和第四个打印字符串之间有一个新行?以及如何删除它?

3 个答案:

答案 0 :(得分:8)

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

即,

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

删除它。

答案 1 :(得分:5)

因为print总是放置一个换行符(默认情况下),所以你在第三和第四行之间有另一个新行的原因是它包含一个明确的\n

print fat_cat,

以上内容抑制了最终输出的隐式换行符。

答案 2 :(得分: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字符串\n中的所有txt都已使用\转义,因此会打印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

打印哪些:

{{1}}