为什么不能在python列表中使用<some-name>?</some-name>

时间:2014-11-27 11:42:19

标签: python xml dom

例如,我们无法手动输入列表:

list = [<element1>, <element2>, <element3>...]

会抛出错误:

>>> list = [<DOM Text node "u'\n\t'">]
  File "<stdin>", line 1
    list = [<DOM Text node "u'\n\t'">]
        ^
SyntaxError: invalid syntax

而我们可以将XML解析元素中的元素放入列表中,这不会导致任何语法错误。我在列表中列出了一些XML元素:

[<DOM Text node "u'\n\t'">, 
 <DOM Element: APPLE at 0x18a4648>, 
 <DOM Text node "u'\n\t\n\t'">, 
 <DOM Element: GOOGLE at 0x18a4968>, 
 <DOM Text node "u'\n\t\n\t'">, 
 <DOM Element: LENOVO at 0x18a4b48>, 
 <DOM Text node "u'\n\t\n\t'">, 
 <DOM Element: SAMSUNG at 0x18a4be8>, 
 <DOM Text node "u '\n'">]

工作正常,但是当我手动尝试使用上面的元素提供列表时,它会失败。

任何人都可以解释为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

无论在有角度的括号之间打印什么,都只是一个人类可读的类,例如:

>>> class Test:
...  pass
... 
>>> a = Test()
>>> print(a)
<__main__.Test object at 0x7f76070b6198>
>>> repr(a)
'<__main__.Test object at 0x7f76070b6198>'

<...>只是一串文字,我们实际上可以控制用__str__() and __repr__()函数打印的内容:

>>> class Banana:
...   def __str__(self):
...     return 'I am probably yellow!'
...
...   def __repr__(self):
...     return 'I am probably yellow!'
... 
>>> b = Banana()
>>> print(b)
I am probably yellow!
>>> repr(b)
I am probably yellow!

如果要创建包含这些变量的列表,请使用变量名称(在本例中为a&amp; b):list = [a, b]

奖金提示:
list是Python中的内置名称(引用list类型(type([]) == list);您可能不希望将其用作变量或函数名称(但因为Python很酷) ,无论如何它都会允许你这样做。)