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

2024-05-16 20:50:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python新手,需要帮助来理解两个与串接字符串有关的问题。我知道可以像这样使用+符号来添加字符串以连接彼此。

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

然而,我最近发现你甚至不需要使用+符号来连接字符串(偶然地/胡乱地),这导致了我要理解的第一个问题-这是如何/为什么可能的!?

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

此外,我还理解'\n'字符串产生一个'newline'。但当和我的第一个问题一起使用时。我明白了。

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

a
a
a
a
a
a
a

所以,我的第二个问题出现了——“为什么我得到7行新的字母‘a’。”。换句话说,中继器符号*不应该重复字母“a”7次吗!?如下所示。

>>> print 'a'*7
aaaaaaa

请帮我澄清发生了什么事。


Tags: 字符串ab字母newline符号print新手aaaaaaa
3条回答

"a" "b"转换为"ab"时,这与将字符串与+连接不同。在读取Python源代码时,为了方便起见,会自动连接相邻的字符串。

这不是一个正常的操作,这就是为什么它没有遵循您期望的+*操作顺序。

print '\n' 'a'*7

实际上被解释为

print '\na'*7

而不是

print '\n' + 'a'*7
  1. 我不知道你说的“怎么可能”是什么意思。编写一条规则:相邻的两个字符串连接起来。然后在解析器中实现它。为什么?因为它允许您方便地执行以下操作:

    re.findall('(<?=(foo))'   # The first part of a complicated regexp
               '>asdas s'     # The next part
               '[^asd]'       # The last part
              )
    

    这样,你就可以描述你在做什么。

  2. 当你做A*B+C时,计算机总是先做A乘以B,然后再加C,因为乘法在加法之前。

    当您通过将字符串文本放在一起并进行乘法来进行字符串连接时,首先是特殊的字符串连接。这意味着'\n' 'a' * 7('\n' 'a') * 7相同,因此您重复的字符串是'\na'

如果不使用逗号分隔字符串,Python会将它们连接在一起:

>>> print 'a' 'b'
ab

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

所以你实际上打印了7次。

相关问题 更多 >