I want to check whether the given string is single- or double-quoted. If it is single quote I want to convert it to be double quote, else it has to be same double quote.
There is no difference between "single quoted" and "double quoted" strings in Python: both are parsed internally to string objects.
I mean:
a = "European Swallow"
b = 'African Swallow'
Are internally string objects.
However you might mean to add an extra quote inside an string object, so that the content itself show up quoted when printed/exported?
c = "'Unladen Swallow'"
If you have a mix of quotes inside a string like:
a = """ Merry "Christmas"! Happy 'new year'! """
Then you can use the "replace" method to convert then all into one type:
a = a.replace('"', "'")
If you happen to have nested strings, then replace first the existing quotes to escaped quotes, and later the otuer quotes:
a = """This is an example: "containing 'nested' strings" """
a = a.replace("'", "\\\'")
a = a.replace('"', "'")
json
, it makes a LOT of difference between a string in ' '
and " ".
–
Influential json.dumps('dog')
ouputs '"dog"'
to the file but I want "dog"
. How to do that? –
Influential json.dumps
create a Python string - if you are viewing it on the interactive mode, you will see the extra quotes around "dog" -, but if yu write that to a file (or use json.dump
directly, a single layer of quotation is used. If you need zero quotes, you shoul strip them manually after json serialization. –
Rhine Sounds like you are working with JSON. I would just make sure it is always a double quoted like this:
doubleQString = "{0}".format('my normal string')
with open('sampledict.json','w') as f:
json.dump(doubleQString ,f)
Notice I'm using dump
, not dumps
.
Sampledict.json
will look like this:
"my normal string"
json.dumps
will return the string if you'd rather not have to export to a file. –
Enviable .format
call. The first line in your snippet is a no-operation: Python strings are Python strings, regardless of the surrouding quotes used when typing the literal. (And the default representation of strings uses single-quotes - " ' " ) –
Rhine In my case I needed to print list in json format. This worked for me:
f'''"inputs" : {str(vec).replace("'", '"')},\n'''
Output:
"inputs" : ["Input_Vector0_0_0", "Input_Vector0_0_1"],
Before without replace:
f'"inputs" : {vec},\n'
"inputs" : ['Input_Vector0_0_0', 'Input_Vector0_0_1'],
The difference is only on input. They are the same.
s = "hi"
t = 'hi'
s == t
True
You can even do:
"hi" == 'hi'
True
Providing both methods is useful because you can for example have your string contain either '
or "
directly without escaping.
"foo"
) and triple-quoted string ("""foo"""
). –
Hyehyena json.dumps('dog')
ouputs '"dog"'
to the file but I want "dog"
. How to do that? –
Influential In Python, there is no difference between strings that are single or double quoted, so I don't know why you would want to do this. However, if you actually mean single quote characters inside a string, then to replace them with double quotes, you would do this: mystring.replace('\'', '"')
string.replace("'", '"')
slightly better—it has a nice alternating pattern of quotes in it :-). –
Puffin Actually, none of the answers above as far as I know answers the question, the question how to convert a single quoted string to a double quoted one, regardless if for python is interchangeable one can be using Python to autogenerate code where is not.
One example can be trying to generate a SQL statement where which quotes are used can be very important, and furthermore a simple replace between double quote and single quote may not be so simple (i.e., you may have double quotes enclosed in single quotes).
print('INSERT INTO xx.xx VALUES' + str(tuple(['a',"b'c",'dfg'])) +';')
Which returns:
INSERT INTO xx.xx VALUES('a', "b'c", 'dfg');
At the moment I do not have a clear answer for this particular question but I thought worth pointing out in case someone knows. (Will come back if I figure it out though)
If you're talking about converting quotes inside a string, One thing you could do is replace single quotes with double quotes in the resulting string and use that. Something like this:
def toDouble(stmt):
return stmt.replace("'",'"')
If you're here because you have have a dict
object that you converted to a string using str()
and would like the dictionary back, doing json.loads(str_stuffs.replace("'", '"'))
should help. So for example,
import json
stuffs = {"stuff1": "value", "stuff2": "value", "stuff3": "value"}
str_stuffs = str(stuffs)
original_stuffs = json.loads(str_stuffs.replace("'", '"'))
Hope this helps!
© 2022 - 2024 — McMap. All rights reserved.
black
formatter will do that automatically for you (unless there's a good reason not to). – Extravascular