файл в формате python - PullRequest
       1

файл в формате python

0 голосов
/ 23 ноября 2018

Итак, вот файл

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

Этот файл также содержит символы новой строки.Я хочу, чтобы tp создал словарь, используя файл.это выглядит так

функция 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 голосов
/ 23 ноября 2018

Для этого простого примера следующее дает желаемые результаты.(Хотя вы, вероятно, неправильно написали виноград).

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...