2017-12-03 143 views
1

所以我遇到了一个问题,当我从xml文件读取信息时。它读入的数据应该是一个数字列表,但是当我读入数据时,它就是一个字符串。有没有办法读取XML数据作为列表或将字符串转换为列表的方式。将字符串转换为python列表或读取xml数据列表

例如,我得到的数据来自xml如[1.0,2.0,3.0,4.0,5.0],如果我检查它的类型说它的一个字符串,即整个事情是一个字符串,包括括号和逗号。

不能换我围​​绕如何转变这一回数

+0

'的列表[浮子(X)对于x在mystring.lstrip( '[')。rstrip( ']')。条()。分裂( '')]' – AK47

+0

@ AK47多么壮观的单线!对于初学者来说不是很有帮助,虽然... –

+0

@ AK47是的,这是一个很好的方法,值得赞赏(我从来没有想过'eval()'!Ususally我避免它像瘟疫,但这可能是一个真正的应用程序)) –

回答

3

您可以使用eval()如果你想你的转换串到浮子

>>> string = '[1.0, 2.0, 3.0]' 

>>> print(type(string)) 
<type 'str'> 

>>> mylist = eval(string) 

>>> print(type(mylist)) 
<type 'list'> 

>>> print([type(x) for x in mylist]) 
[<type 'float'>, <type 'float'>, <type 'float'>] 

>>> print(mylist) 
[1.0, 2.0, 3.0] 
+0

啊忘了提及我正在python中尝试这个。所以eval命令不起作用,因为它是Maya版本的python库中的关键字 – dege

+0

'eval()'是[python2]的一个内置函数(https://docs.python.org/2/library/functions.html #eval)和[python3](https://docs.python.org/3/library/functions.html#eval) – AK47

+0

是的,购买maya的版本也是eval(),所以它不幸覆盖了python的eval()。 – dege

2

对于这一点,你可以使用str.split()内置方法的表头。

x = "[1.0, 2.0, 3.0, 4.0, 5.0]"

首先,摆脱字符串周围的方括号:

x = x[1:-1](X现在"1.0, 2.0, 3.0, 4.0, 5.0",长字符串)

然后,分割字符串成字符串列表:

x = x.split(',')(x现在是["1.0", "2.0", "3.0", "4.0", "5.0"],字符串列表)

然后,将所有这些字符串在float(我假设你想要的):

x = [float(i) for i in x](现在x是[1.0, 2.0, 3.0, 4.0, 5.0],花车的列表)

相关问题