Как убрать кавычки вокруг значения в строковом представлении dict? - PullRequest
0 голосов
/ 26 февраля 2020

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

Чтобы получить больше контекста:

def a(content):
    return {'row_contents': content}

print(a("Hello"))

Это дает вывод как:

{'row_contents': 'Hello'}

Я хочу удалить кавычки вокруг Привет при возврате этого (что-то, как показано ниже)

{'row_contents': Hello}

Есть ли легкий способ достичь этого?

Ответы [ 3 ]

1 голос
/ 26 февраля 2020

вы можете использовать f string

def a(content):
    return f"{{'row_contents': {content}}}"


print(a("Hello"))

или просто так:

def a(content):
    return "{'row_contents':"+content+"}"

Выход:

{'row_contents': Hello}
1 голос
/ 26 февраля 2020

Вы можете просто получить строковое представление словаря и удалить одинарные кавычки.

def a(content):
    return {'row_contents': content}

def print_dict_without_quotes(d):
    print(str(d).replace("'", "").replace('"', ''))

print_dict_without_quotes(a("Hello"))

Вывод:

{row_contents: Hello}
0 голосов
/ 27 февраля 2020

Я все еще считаю, что этот вопрос с высокой вероятностью является проблемой XY .

Тем не менее, относительно вашего вопроса в его нынешнем виде: Если вы не хотите изменять print , вам осталось только изменить возвращаемое значение вашей функции a. Ваш комментарий выше говорит:

Я хочу вернуть dict

Это похоже на простое возвращение измененного строкового представления {'row_contents': content} на самом деле не то, что вы ищем. Тем не менее, dict.__repr__ сам по себе только для чтения, поэтому я думаю, что наиболее близким решением было бы вернуть экземпляр пользовательского dict подкласса:

class CustomDict(dict):
    def __repr__(self):
        return "{" + ", ".join([repr(k) + ": " + str(v) for k, v in self.items()]) + "}"

def a(content):
    return CustomDict({'row_contents': content})

print(a("Hello"))
print(isinstance(a("Hello"), dict))

, который печатает:

{'row_contents': Hello}
True

Возможно, вам потребуется улучшить CustomDict.__repr__ в зависимости от того, какие модификации необходимы для обеспечения желаемого результата. Вы также можете изменить исходное строковое представление super().__repr__().

...