如何用逗号分割两个值

时间:2013-10-10 21:58:46

标签: python

在像:

这样的文件中
 jaslkfdj,asldkfj,,,
 slakj,aklsjf,,,
 lsak,sajf,,,

你怎么能把它分开,所以这两个词只有一对键值对?我试图用逗号分割,但我知道如何制作键/值对的唯一方法是在一行中只有一个commma。

python给出错误:“ValueError:解压缩的值太多(预期为2)”,因为每行末尾有3个额外的逗号

这就是我所拥有的:

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

3 个答案:

答案 0 :(得分:2)

尝试切片前两个值:

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

this answer中切片表示法的精彩摘要。

答案 1 :(得分: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 :(得分: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'}