将线分成cols

时间:2014-10-09 14:10:31

标签: python numpy

我有一个这样的文件(以空白行结束)

1 hello hello
4 hello1
...
<emptyline>

我想把它变成格式字典 {"hello hello":1, "hello1":4} ... key是字符串,值是整数

我现在做什么

dic={}
for line in open(file,'rb'):
    if line.strip:
        idx=line.find(" ")
        cnt=int(line[:idx])
        key=line[idx+1:]
        dic[key]=cnt

使用numpy或其他方法有更好或更短的方法吗?

3 个答案:

答案 0 :(得分:3)

您可以split并使用1的第二个参数仅拆分一次。

with open('file.txt', 'r') as f:
    d = {}
    for line in f:
        if line.strip():
            value, key = line.split(' ',1)
            d[key] = int(value)

将其降低为字典理解

with open('file.txt', 'r') as f:
    d = {key:int(value) for value,key in [line.split(' ',1) for line in f if line.split()]}

答案 1 :(得分:1)

d = {}
with open('file2.txt') as f:
    for l in f:
        s = l.split(' ')
        d[s[1]] = s[0]  
        print d

答案 2 :(得分:0)

我能得到的最短,并且应该足够有效,但有点神秘:)

with open('file.txt', 'r') as f:
    rows = map(lambda l: l.strip().partition(' '), f)
    d = { r[2]: int(r[0]) for r in rows if r[2] }