2

看《Learn Python the Hard Way》,我在玩练习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

我的问题是:为什么在第三个和第四个打印字符串之间有一个新行?我怎样才能删除它?

4

3 回答 3

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

那是,

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

删除它。

于 2013-06-01T16:32:40.353 回答
5

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

print fat_cat,

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

于 2013-06-01T16:35:29.000 回答
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
于 2013-06-01T16:44:34.197 回答