экранирование кавычек в python
Доброго времени суток!
Необходимо чтобы следующая строка:
pk_list_timestamp = 'date_trunc(''seconds'',' + ' '.join(row['"targetFieldName"'].lower().split()) +')'
Выводила значения вида:
date_trunc('seconds',validdateto)
На данный момент вывод следующий:
date_trunc(seconds,validdateto)
Ответы (2 шт):
Автор решения: Roman Konoval
→ Ссылка
Используйте двойные кавычки для строк, тогда в них можно включать одинарные без экранирования:
pk_list_timestamp = "date_trunc('seconds'," + ''.join(row['"targetFieldName"'].lower().split()) +')'
Автор решения: David
→ Ссылка
Есть несколько вариантов, первые два наиболее предпочтительны:
- Использовать двойные кавычки
pk_list_timestamp = "date_trunc('seconds'," + ' '.join(row['"targetFieldName"'].lower().split()) +')'Пояснение: Если строка открывается двойной кавычкой, то и закрывается она только двойной кавычкой - Экранировать кавычки внутри строки
pk_list_timestamp = 'date_trunc(\'seconds\',' + ' '.join(row['"targetFieldName"'].lower().split()) +')'Пояснение: добавление символа\перед кавычкой говорит компилятору о том, что это просто символ, а не конец строки - Использовать big string
pk_list_timestamp = '''date_trunc('seconds',''' + ' '.join(row['"targetFieldName"'].lower().split()) +')'Пояснение: строки, которые открываются тройными кавычками ('''текст'''или"""текст""")игнорируют любые одинарные или двойные кавычки
Если интересует почему у вас результат выходит именно такой:
Две строки, которые находятся друг за другом ('Текст1' 'Текст2') будут автоматически склеены интерпретатором в одну строку ('Текст1Текст2'). В вашем случае 'date_trunc(''seconds'',' преобразовывается в 'date_trunc(' + 'seconds' + ',', т.е. склеиваются.