как прочитать содержимое файла и преобразовать его в словарь в Python - PullRequest
0 голосов
/ 06 мая 2019

У меня есть текстовый файл (application.txt) , содержащий n строк данных (с двумя разделителями) в следующем формате.

1) mytvScreen | mytvScreen | Mi TV, Mí TV, My TV, TV
2) часыСледующий экран | часыСледующий экран | Seguir viendo, Mi TV Seguir viendo
3) записи Экран | записи Экран | Грабасионы, Mis Grabaciones, Mi TV

Примечание: 1,2,3 - это просто номера строк для справки. Исходный файл не содержит номера.

Я пытаюсь написать функцию, которая будет считывать каждую строку и преобразовывать ее в словарь, используя значение до первого разделителя и значения после второго разделителя, как в примере, показанном ниже.

например:

Следующая строка должна быть преобразована в словарь, как ожидается ниже. 1) mytvScreen | mytvScreen | Ми ТВ, Ми ТВ, Мой ТВ, ТВ

Ожидаемый формат:

mytvScreen: Mi TV, Mí TV, My Tv, TV

Кроме того, после указания любого значения, разделенного запятыми, оно должно возвращать значение перед двоеточием.

Например:

Когда задано значение Mi TV, оно должно вернуть mytvScreen или для других значений, разделенных запятыми, должно вернуть mytvScreen

Мне удалось прочитать файл и распечатать значения, как ожидалось.

Но не уверен, как я могу преобразовать каждую строку в словарь.

with open('applications.txt') as f:
                for line in f:
                        details=line.split("|",2)
                        print (details[0] + ' : '+ details[2])

Ваша помощь высоко ценится.

Ответы [ 2 ]

0 голосов
/ 06 мая 2019

Я строю файл-объект для имитации applications.txt содержимого:

>>> import io
>>> f = io.StringIO("""mytvScreen|mytvScreen|Mi TV,Mí TV, My Tv, TV
... watchNextScreen|watchNextScreen|Seguir viendo,Mi TV Seguir viendo
... recordingsScreen|recordingsScreen|Grabaciones,Mis Grabaciones,Mi TV""")

Ваш файл, очевидно, является CSV-файлом, поэтому вы должны использовать модуль csv для его анализа:

>>> import csv
>>> reader = csv.reader(f, delimiter='|')

Последняя часть - просто диктовка:

>>> {row[0]: row[2] for row in reader}
{'mytvScreen': 'Mi TV,Mí TV, My Tv, TV', 'watchNextScreen': 'Seguir viendo,Mi TV Seguir viendo', 'recordingsScreen': 'Grabaciones,Mis Grabaciones,Mi TV'}
0 голосов
/ 06 мая 2019

Вы должны добавлять элементы в словарь, один из подходов приведен ниже.

s_dict= dict()
with open('applications.txt') as f:
      for line in f:
          details=line.split("|",2)
          print (details[0] + ' : '+ details[2])
          s_dict[details[0]]  = details[2]
      print (s_dict)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...