Python字符串连接 - 连接'\n

9 投票
4 回答
38886 浏览
提问于 2025-04-16 22:08

我刚开始学习Python,遇到了两个关于字符串连接的问题,希望能得到帮助。我知道可以用加号(+)来把字符串连接在一起,像这样。

>>> 'a' + 'b'
'ab'

不过,我最近发现其实不需要用加号也能连接字符串(这是我偶然发现的),这让我产生了第一个疑问——这是怎么可能的呢?

>>> print 'a' + 'b'
ab

另外,我也知道'\n'这个字符串会产生一个“换行”。但是当我把它和第一个问题结合起来用时,出现了以下情况。

>>> print '\n' 'a'*7

a
a
a
a
a
a
a

所以我又产生了第二个疑问——“为什么我会得到7个字母'a'的新行?换句话说,*这个符号不是应该把字母'a'重复7次吗?应该是这样的。

>>> print 'a'*7
aaaaaaa

请帮我弄清楚这是怎么回事。

4 个回答

1

你可能已经发现,依赖相邻字符串的隐式连接有时候会带来问题。而且,用 + 运算符来连接字符串效率也不高。如果只是连接几个小字符串,这点问题可能不明显,但当字符串数量变多时,就会很明显了。

所以,建议你明确地进行连接;可以使用 ''.join() 方法。

print '\n'.join(['a'*7])
2

在Python中,如果你把字符串放在一起而不加逗号,它们会自动连接起来:

>>> print 'a' 'b'
ab

>>> print 'a', 'b'
a b

所以你实际上是在打印 '\na' 这个内容7次。

17

"a" "b" 被变成 "ab" 时,这和用 + 把字符串连接起来是不一样的。在阅读 Python 源代码时,紧挨着的字符串会自动合并,这样做是为了方便。

这并不是一种普通的操作,所以它没有遵循你对 +* 的预期运算顺序。

print '\n' 'a'*7

实际上被解释为

print '\na'*7

而不是

print '\n' + 'a'*7

撰写回答