Python - записывать файлы при выполнении заказа - PullRequest
1 голос
/ 05 июня 2019

У меня есть данные, сохраненные в словаре, например:

{'CTY': '897', 'LC': '7W', 'DIV': '7W', 'MAJ': '018', 'MINOR': '0100', 'SMIN': '0010', 'INS_TIME_STAMP': datetime.datetime(2016, 3, 8, 17, 37, 40, 897812)}

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

CTY LC DIV MAJ MINOR SMIN INS_TIME_STAMP
897 7W 7W  018 0100  0010 2016-03-08 17:37:40.897812

Вы можете заметить, что значение начинается в том же столбце, что и ключ.

Это то, что я пробовал до сих пор:

with open('Archivo.txt', 'a') as a:
        to_write = []

        filtered_dict = {key: value for key, value in query_result.items() if not isinstance(key, int)}
        column_names = [key for key in filtered_dict.keys()]
        columns = " ".join(column_names)
        a.write(columns + '\n')

        result_values = [str(value) for value in filtered_dict.values()]
        values = " ".join(result_values)
        a.write(values + '\n')

Что приводит к:

CTY LC DIV MAJ MINOR SMIN INS_TIME_STAMP
897 7W 7W 018 0100 0010 2016-03-08 17:37:40.897812

1 Ответ

0 голосов
/ 05 июня 2019

Если вы хотите, чтобы текст читался человеком, вы можете использовать строковый литерал '\ t' для горизонтальной вкладки ASCII. Помните, что некоторые значения могут быть слишком длинными, и одной вкладки может быть недостаточно для дополнения столбца.

columns = "\t".join(column_names)
values = "\t".join(result_values)

Вы также можете использовать пробелы, вычисляя разницу между длинами ключей и значений, но тогда вам придется их циклически проходить. (.join () делает то же самое, это просто абстракция)

ps: вы, кажется, не используете to_write = [], так что вы, вероятно, можете от него избавиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...