2014-04-05 75 views
0

我只有一个元素的列表,它本身就是一个元素列表。Python:将字符串分割成元素并将它们添加到列表中

str = '"MARY","PATRICIA","LINDA","BARBARA","ELIZABETH","JENNIFER","MARIA","SUSAN","MARGARET","DOROTHY","LISA","NANCY","KAREN","BETTY","HELEN","SANDRA","DONNA","CAROL"' 

现在,我希望该字符串中的每个单独名称都包含在另一个列表中。为此,我明白我必须单独分割每个名称,然后将它们附加到所需的列表中。这里是我写的代码相同:

str = '"MARY","PATRICIA","LINDA","BARBARA","ELIZABETH","JENNIFER","MARIA","SUSAN","MARGARET","DOROTHY","LISA","NANCY","KAREN","BETTY","HELEN","SANDRA","DONNA","CAROL"' 
li = str.split() 
c = li[0] 
ip = [] 
start = c.find('"') 
final = c.find('"', start+1) 
def iter(start, final): 
    e = c[start+1:final] 
    ip.append(e) 
nstart = c.find('"', final+1) 
nfinal = c.find('"', nstart+1) 
if(nstart == -1 or nfinal == -1): 
    print ip 
else: 
    iter(nstart, nfinal) 

但是,我没有得到任何输出。 'ip'是我打算单独存储所有名称的列表。我的代码似乎有什么问题?

+4

'名称列表= nameStr的[1:-1] .split( ' “”')'? – Hyperboreus

+0

这个字符串从哪里来的?这看起来很像一行CSV文件。 – DSM

+0

我从我正在使用的文件中获得该字符串。 –

回答

2

您的代码比需要的要复杂得多。您可以使用评论,或做:

foo = '"MARY","PATRICIA","LINDA","BARBARA","ELIZABETH","JENNIFER","MARIA","SUSAN","MARGARET","DOROTHY","LISA","NANCY","KAREN","BETTY","HELEN","SANDRA","DONNA","CAROL"' 
output = foo.replace('"','').split(",") 
2

首先,调用str是不好的,因为str是python中的内建函数。

其次,你可以用下面这样做:

in_list_string = '"MARY","PATRICIA","LINDA","BARBARA","ELIZABETH","JENNIFER","MARIA","SUSAN","MARGARET","DOROTHY","LISA","NANCY","KAREN","BETTY","HELEN","SANDRA","DONNA","CAROL"' 
out_list= [element.strip('"') for element in in_list_string.split(',')] 
2

使用the csv module为CSV数据:

>>> import csv 
>>> from StringIO import StringIO 
>>> dont_call_me_str='"MARY","PATRICIA","LINDA","BARBARA","ELIZABETH","JENNIFER","MARIA","SUSAN","MARGARET","DOROTHY","LISA","NANCY","KAREN","BETTY","HELEN","SANDRA","DONNA","CAROL"' 
>>> list(csv.reader(StringIO(dont_call_me_str))) 
[['MARY', 'PATRICIA', 'LINDA', 'BARBARA', 'ELIZABETH', 'JENNIFER', 'MARIA', 'SUSAN', 'MARGARET', 'DOROTHY', 'LISA', 'NANCY', 'KAREN', 'BETTY', 'HELEN', 'SANDRA', 'DONNA', 'CAROL']] 
相关问题