How to include a double-quote and/or single-quote character in a raw Python string literal?

Question:

Consider:

>>> r"what"ever"
SyntaxError: invalid syntax
>>> r"what"ever"
'what\"ever'

So how do we get the quote, but not the slash?

And please don’t suggest r'what"ever', because then the question just becomes how do we include both types of quotes?

Related

Asked By: mpen

||

Answers:

Python has more than one way to do strings. The following string syntax would allow you to use double quotes:

'''what"ever'''
Answered By: Karl

If you want to use double quotes in strings but not single quotes, you can just use single quotes as the delimiter instead:

r'what"ever'

If you need both kinds of quotes in your string, use a triple-quoted string:

r"""what"ev'er"""

If you want to include both kinds of triple-quoted strings in your string (an extremely unlikely case), you can’t do it, and you’ll have to use non-raw strings with escapes.

Answered By: Adam Rosenfield

Nevermind, the answer is raw triple-quoted strings:

r"""what"ever"""
Answered By: mpen

If you need any type of quoting (single, double, and triple for both) you can “combine”(0) the strings:

>>> raw_string_with_quotes = r'double"' r"single'" r'''double triple""" ''' r"""single triple''' """
>>> print raw_string_with_quotes
double"single'double triple""" single triple'''

You may also “combine”(0) raw strings with non-raw strings:

>>> r'raw_stringn' 'non-raw stringn'
'raw_string\nnon-raw stringn'

(0): In fact, the Python parser joins the strings, and it does not create multiple strings. If you add the “+” operator, then multiple strings are created and combined.

Answered By: Bakuriu

Use:

dqote='"'
sqote="'"

Use the ‘+’ operator and dqote and squote variables to get what you need.

If I want sed -e s/",u'"/",'"/g -e s/^"u'"/"'"/, you can try the following:

dqote='"'
sqote="'"
cmd1="sed -e s/" + dqote + ",u'" + dqote + "/" + dqote + ",'" + dqote + '/g -e s/^"u' + sqote + dqote + '/' + dqote + sqote + dqote + '/'
Answered By: zulfi123786

Since I stumbled on this answer, and it greatly helped me, but I found a minor syntactic issue, I felt I should save others possible frustration. The triple quoted string works for this scenario as described, but note that if the ” you want in the string occurs at the end of the string itself:

somestr = """This is a string with a special need to have a " in it at the end""""

You will hit an error at execution because the “””” (4) quotes in a row confuses the string reader, as it thinks it has hit the end of the string already and then finds a random ” out there. You can validate this by inserting a space into the 4 quotes like so: ” “”” and it will not have the error.

In this special case you will need to either use:

somestr = 'This.....at the end"'

or use the method described above of building multiple strings with mixed ” and ‘ and then concatenating them after the fact.

Answered By: charrold303

Just to include new Python f String compatible functionality:

var_a = 10

f"""This is my quoted variable: "{var_a}". """
Answered By: illusionx
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.