2013-10-10 67 views
0

两个值在这样一个文件:如何分割用逗号

jaslkfdj,asldkfj,,, 
slakj,aklsjf,,, 
lsak,sajf,,, 

你怎么能分裂它所以只是一个键值对的两个词的?我试图用逗号分割,但唯一的方法是我知道如何创建键/值对,当一行中只有一个commma时。

蟒蛇给出了错误:“ValueError异常:值过多解压(预期2)”,因为在每行

本月底的3个额外的逗号是我:

newdict= {} 
wd = open('file.csv', 'r') 
for line in wd: 
     key,val = line.split(',') 
     newdict[key]=val 
print(newdict) 
+0

'分裂()'与一个极限,'rstrip()可以'丢弃其余部分。 – Wrikken

+0

请显示您尝试的代码,而不是仅仅描述它,并且让我们猜测可能错误的十亿个可能的事情中的哪一个是您实际面临的问题。 – abarnert

+1

@abarnet这是这个问题的第三个迭代:1st:http://stackoverflow.com/questions/19304591/converting-file-to-key-value-dictionary和2nd:http://stackoverflow.com/questions/ 19305666/word-dictionary-problems –

回答

2

似乎更有可能的是,你尝试过的情况是这样的:

>>> line = 'jaslkfdj,asldkfj,,,' 
>>> key, value = line.split(',') 
ValueError: too many values to unpack (expected 2) 

这种情况有解决方法有两种。

首先,你可以分割,然后只取前两个值:

>>> line = 'jaslkfdj,asldkfj,,,' 
>>> parts = line.split(',') 
>>> key, value = parts[:2] 

或者你可以使用一个maxsplit说法:

>>> line = 'jaslkfdj,asldkfj,,,' 
>>> key, value = line.split(',', 1) 

这第二个会留下多余的逗号但是这很容易修复:

>>> value = value.rstrip(',') 
2

尝试切片的前两个值:

"a,b,,,,,".split(",")[:2] 

片符号的很好的总结中this answer

0
with open('file.csv', 'r') as wd: 
    newdict = dict(line.split(",")[:2] for line in wd.read().splitlines()) 

print newdict 

结果如下:

{' jaslkfdj': 'asldkfj', ' lsak': 'sajf', ' slakj': 'aklsjf'}