dict to str как преобразовать с возможностью изменения строки
Как преобразовать словарь в строку, заменив при этом запятую на точку с запятой. Пример: {key: value, key: value} на входе, на выходе нужно 'key: value; key: value'
json.dumps(dict) и json(loads) пробовала, но json.loads не работает когда я делаю replace (',',';') по строке из json.dumps(dict). json.dumps(dict) - вывод не в той кодировке, преобразовать в python формат не смогла Как преобразовать так, чтобы я могла внести изменения в эту строку, сохранив при этом кодировку
Ответы (3 шт):
d = {1: 2, 3: 4}
s = "; ".join(f"{k}:{v}" for k, v in d.items())
# Результат '1:2; 3:4'
JSON и словарь Python - это не одно и то же, поэтому вам методы json тут и не нужны. Вот, к примеру, самый простой вариант решения вашей задачи:
my_dict = {
"key1": "value1",
"key2": "value2"
}
my_str = str(my_dict) # создаем строку, содержащую наш словарь
formated_str = my_str.replace("{", "").replace("}", "").replace(",", ";")
# убираем фигурные скобки и заменяем запятую на точку с запятой
print(formated_str)
либо таким способом:
my_dict = {
"key1": "value1",
"key2": "value2"
}
my_str = "" #создаем пустую строку
for key, value in my_dict.items(): # в цикле перебираем пары ключ: значение
my_str = my_str + key + ": " + value + "; " # добавляем к строке запись нужного формата
print (my_str)
все просто
my_dict = {
"key1": "value1",
"key2": "value2"
}
str(my_dict).replace(",", ";")[1:-1]
# вывод
'key1': 'value1'; 'key2': 'value2'
UPD (согласно комментарию от @GrAnd)
Метод описанный выше не является универсальным и скорей всего не пройдет проверку и тестирование. Отсюда и вытекают некие требования к задающему вопрос:
- Входные данные
- Выходные данные
Те входные и выходные данные, что указаны не являются корректными (key - уникальное значение) и берутся как пример.
Какая в итоге логика нужна? поразмышляем.
Вопрос: преобразовать словарь в строку с возможностью изменения строки.
Строка - это изменяемый тип данных, и изменения можно внести всегда. Словарь в строку, не проблема. Указаний на то, что будет содержать словарь нет, примеров реальных входных данных нет. Данный метод "посыпется", как только появится запятая в данных. Или не посыпется? Нужно, ли, все запятые заменить на точку с запятой.
Следующее. Если, же, нужно заменить запятые между парами ключ-значение, то естественно, необходимо выбрать метод, который так или иначе перебирает словарь.
Обычный for словаря, где d.items() - список кортежей:
string = ""
for key, value in d.items():
string += f"{key}:{value};"
Можно и дальше пойти и использовать collections, только зачем. Вот и возникает вопрос о входных и выходных данных.
Можно и дальше смотреть на тему типов данных. ТС использует json. Вопрос: почему? Данные приходят в этом виде? Тогда, до преобразования в словарь это последовательность символов. Может на этом этапе обрабатывать?
и так далее