Python 3:为什么str上的splitlines()导致TypeError? (但不总是)

时间:2014-09-11 19:02:58

标签: python exception

也许我太累了看不到它,但为什么会这样呢

cmds = '''
AA ''' + ''' BB
'''.splitlines()

结果

Traceback (most recent call last):
  File "<pyshell#15>", line 3, in <module>
    '''.splitlines()
TypeError: Can't convert 'list' object to str implicitly

这很好用:

cmds = '''
AA ''' + ''' BB
'''
print(cmds.splitlines())

3 个答案:

答案 0 :(得分:3)

splitlines方法在添加之前被称为 ,因此:

cmds = '''
AA ''' + ''' BB
'''.splitlines()

......等同于:

cmds = ('''
AA ''') + (''' BB
'''.splitlines())

...这意味着您正在尝试将字符串添加到字符串中。

然而,在第二种情况下:

cmds = '''
AA ''' + ''' BB
'''
print(cmds.splitlines())

...您首先进行添加,并在结果上调用splitlines

答案 1 :(得分:0)

这是完成操作的顺序。在

cmds = '''
AA ''' + ''' BB
'''.splitlines()

splitlines()成功拆分第二个字符串

''' BB
'''

然后它尝试将结果(列表)连接到第一个字符串

'''
AA '''

这没有意义。在第二个片段中,首先发生连接,然后splitlines正常工作。

答案 2 :(得分:0)

第一个示例是在尝试将第二个字符串连接到第一个字符串之前拆分第二个字符串。第二个例子是首先连接两个字符串,然后将其拆分。