python格式的文件

时间:2018-11-23 01:51:11

标签: python dictionary

这是一个文件

APPLE: toronto, 2018, garden, tasty, 5
apple is a tasty fruit
>>>end 
Orange: japan, 32, home, sour, 1
orange is a sour fruit
>>>end
graEes: america, 24, organic, sweet, 4
grapes is a sweet fruit
>>>end

这是一个文件,也有换行符。 我想用文件创建一个字典。就像这样

函数是def f(file_to:(TextIO))-> Dict [str,List [tuple]]

file_to是输入的文件名,它将返回字典,例如

{'apple': ['apple is a tasty fruit', 2018, 'garden', 'tasty', 5], orange:['orange is a sour fruit', 32,'home', 'sour',1] then grapes......}

每种水果都是关键,它们的描述是在那里格式化的值。每个水果都以>>> end

结尾

我尝试过

with open (file_to, "r") as myfile:
    data= myfile.readlines()
return data

它使用/ n返回列表中的文件字符串,我想我可以使用strip()删除该字符串,并获取':'之前的元素作为键。

1 个答案:

答案 0 :(得分:2)

对于这个简单的示例,以下给出了所需的结果。 (尽管您可能对葡萄拼错了。)

from pprint import pprint
import re

def main():
    fin = open('f1.txt', 'r')

    data = {}
    key = ''
    parsed = []
    for line in fin:
        line = line.rstrip()
        if line.startswith('>'):
            data[key] = parsed
            parsed = []
        elif ':' in line:
            parts = re.split('\W+', line)
            key = parts[0].lower()
            parsed += parts[2:]
        else:
            parsed.insert(0, line)

    fin.close()
    pprint(data)


main()