2013-10-10 70 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'}