Итак, у меня есть файл .txt, и я хочу использовать методы этого класса, Map, для добавления его содержимого в aDictionary.
class Map:
def __init__(self, dataText):
self.dataText = dataText
self.aDictionary = {}
dataFile = open('data.txt', 'r')
c1 = Map(dataFile)
Мой файл data.txt выглядит примерно так:
hello, world
how, are
you, today
и я хочу, чтобы aDictionary распечатал этот вывод:
{how: are, you: today}
Я не очень хорошо умею манипулировать файлами, так как продолжаю получать ошибки типа и тому подобное. Есть ли простой способ выполнить эту задачу с помощью методов внутри класса?






Сначала вам нужно прочитать содержимое файла. Когда у вас есть содержимое файла, вы можете создать словарь следующим образом (при условии, что content содержит содержание из data.txt):
content = """hello, world
how, are
you, today"""
d = {}
for line in content.splitlines():
if line:
key, value = map(str.strip, line.split(','))
d[key] = value
print(d)
Вывод
{'you': 'today', 'how': 'are', 'hello': 'world'}
Идея состоит в том, чтобы перебрать строки с помощью цикла for, затем проверить, не пуста ли строка (if line), в случае, если строка не пуста, разделить на запятую (line.split(',')) и удалить конечные пробелы (str.strip) для каждого значений в списке с помощью карта.
Или используя понимание словаря:
content = """hello, world
how, are
you, today"""
it = (map(str.strip, line.split(',')) for line in content.splitlines() if line)
d = {key: value for key, value in it}
print(d)
Чтобы прочитать содержимое файла, вы можете сделать следующее:
content = self.dataText.read()
Дальше
Хорошо, это сработало! не могли бы вы объяснить, как работает ваш первый метод? Я новичок в словарях и работе с файлами в Python. Большое спасибо!
@CosmicCat Обновил ответ!
Я получил ошибку AttributeError: объект '_io.TextIOWrapper' не имеет атрибута 'splitlines' при замене 'content' на 'self.dataText;