2012-06-25 28 views
0

a question on multiple-value elements in a config file(这完全符合我的需要)的答案建议“从配置中解压字符串”。我阅读了几处地方提出的unpacking arguments lists的文档,但我不明白这与我的问题有何关系。python:将一个字符串解压到列表

我相信这一定是显而易见的:有一个字符串str = "123,456",我怎样才能将其转换为列表[123,456](用逗号在字符串中分离出来可能会有所不同元素的个数)

谢谢。

+0

谢谢你的回复。我用map()函数学了一些东西。另外“str”对于一个函数来说确实是一个糟糕的名字,我通常使用thisString版本(但墨菲法则规定我在全球发布时使用“str”):) – WoJ

回答

4

你想要一个字符串列表或一个整数列表吗?

如果你只是想要一个字符串列表,这是非常简单的:

my_list = my_string.split(',') 

如果您希望将这些转换为整数,您需要:

my_list = map(int, my_string.split(',')) 

(另外,不要使用str作为变量名称,因为它会影响内置的str()函数。)

+0

出于好奇,性能方面是否有显着差异使用'map'还是简单地使用我提供的语法? – pcalcao

+0

不是。说实话,我通常自己使用列表理解,但这次键入'map'是因为键入:-)更快 –

5
[int(x) for x in str.split(",")] 

你基本上将函数int通过您的字符串的分割产生的每一个元素。

简单地说str.split(',')的结果是["123","456"]

正如丹尼尔罗斯曼指出的那样,您应该注意不要使用无意中掩盖内置方法的变量或方法名称,例如str

0

尽管我同意其他答案,但您也应该在inva情况下处理异常假设数字的盖子字符串表示。以下面的代码片段为例:

number_string = "123,456,x21" 
delimiter = "," 
number_list = [] 
for item in number_string.split(delimiter): 
    try: 
     my_num = int(item) 
     number_list.append(item) 
    except ValueError, e: 
     # you can choose to just pass or handle the error like so 
     print "Skipping %s: %s" % (item, e.message) 

只是一个想法。祝你好运!

相关问题