Преобразование строки с одной кавычкой в ​​строку с двойными кавычками

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

Ответ 1

В Python нет разницы между одиночными кавычками и двойными кавычками. оба анализируются внутри для строковых объектов.

Я имею в виду:

a = "European Swallow"
b = 'African Swallow'

Являются внутренне строковыми объектами.

Однако вы могли бы добавить дополнительную цитату внутри строкового объекта, чтобы сам контент отображался при печати/экспорте?

c = "'Unladen Swallow'" 

?

Ah - учитывая разуплотнение (опубликовано как коммант Кумара, ниже):

Если у вас есть сочетание кавычек внутри строки, например:

a = "" Веселого Рождества "! Счастливый" новый год "!" "

Затем вы можете использовать метод "replace", чтобы преобразовать все в один тип:

a = a.replace('"', "'") 

Если у вас есть вложенные строки, замените сначала существующие кавычки на экранированные кавычки, а затем цитаты otuer:

a = """This is an example: "containing 'nested' strings" """
a = a.replace("'", "\\\'")
a = a.replace('"', "'")

Ответ 2

Похоже, вы работаете с json. Я бы просто удостоверился, что это всегда двойное quouted, как это:

doubleQString = "{0}".format('my normal string')
with open('sampledict.json','w') as f:
    json.dump(doubleQString ,f)

Заметьте, что я использую dump, не dumps.

Sampledict.json будет выглядеть следующим образом:

"my normal string"

Ответ 3

Разница только на входе. Они одинаковы.

s = "hi"
t = 'hi'
s == t

True

Вы даже можете сделать:

"hi" == 'hi'

True

Предоставление обоих методов полезно, потому что вы можете, например, содержать строку ' или " напрямую, без экранирования.

Ответ 4

В Python нет разницы между строками, которые имеют одинарные или двойные кавычки, поэтому я не знаю, почему вы хотели бы это сделать. Однако, если вы действительно имеете в виду символы одиночной кавычки внутри строки, то для замены их двойными кавычками вы должны сделать это: mystring.replace('\'', '"')

Ответ 5

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

f'''"inputs" : {str(vec).replace("'", '"')},\n'''

Выход:

"inputs" : ["Input_Vector0_0_0", "Input_Vector0_0_1"],

Перед без замены:

f'"inputs" : {vec},\n'

"inputs" : ['Input_Vector0_0_0', 'Input_Vector0_0_1'],