2013-10-10 2 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 это третья итерация этого вопроса: 1-й: 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 = value.rstrip(',') 
2

Попробуйте нарезку в течение первых двух значений:

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

Nice резюме ломтик нотация в 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'}

Смежные вопросы