Reputation: 283213
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?
Upvotes: 125
Views: 302643
Reputation: 102029
If you need any type of quoting (single, double, and triple for both) you can "combine"[1] 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"[1] raw strings with non-raw strings:
>>> r'raw_string\n' 'non-raw string\n'
'raw_string\\nnon-raw string\n'
[1] 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.
Upvotes: 16
Reputation: 3895
Just to include new Python f String compatible functionality:
var_a = 10
f"""This is my quoted variable: "{var_a}". """
Upvotes: 2
Reputation: 175
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 + '/'
Upvotes: -3
Reputation: 6165
Python has more than one way to do strings. The following string syntax would allow you to use double quotes:
'''what"ever'''
Upvotes: 10
Reputation: 93
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.
Upvotes: 6
Reputation: 400572
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.
Upvotes: 198
Reputation: 283213
Nevermind, the answer is raw triple-quoted strings:
r"""what"ever"""
Upvotes: 5