我想检查给定的字符串是单引号还是双引号。如果它是单引号,我想将其转换为双引号,否则它必须保持相同的双引号。
在Python中,“单引号”和“双引号”字符串之间没有区别:两者都被解析为内部的字符串对象。
我的意思是:
a = "European Swallow"
b = 'African Swallow'
是内部字符串对象。
但你可能想在字符串对象中添加额外的引号,这样当打印/导出时,内容本身会显示为带引号的吗?
c = "'Unladen Swallow'"
如果您的字符串中包含引号混合使用的情况,例如:
a = """ Merry "Christmas"! Happy 'new year'! """
然后你可以使用“replace”方法将它们全部转换为同一类型:
a = a.replace('"', "'")
如果你有嵌套的字符串,那么首先将现有的引号替换为转义引号,然后再替换外部引号:
a = """This is an example: "containing 'nested' strings" """
a = a.replace("'", "\\\'")
a = a.replace('"', "'")
json
时,在使用单引号 ' '
和双引号 " "
包裹字符串时,会有很大的区别。 - CKMjson.dumps('dog')
输出到文件中的是 '"dog"'
,但我想要的是 "dog"
。如何实现? - CKMjson.dumps
会创建一个 Python 字符串 - 如果你在交互模式下查看它,你会看到 "dog" 周围有额外的引号 - 但是如果你将其写入文件(或直接使用 json.dump
),则只使用一层引号。如果你需要零引号,那么你应该在 json 序列化后手动去除它们。 - jsbueno听起来你正在使用JSON。我只想确保它总是像这样用双引号括起来:
doubleQString = "{0}".format('my normal string')
with open('sampledict.json','w') as f:
json.dump(doubleQString ,f)
请注意,我使用的是 dump
,而不是 dumps
。
Sampledict.json
的内容将会长这样:
"my normal string"
json.dumps
将返回字符串。 - jlansey.format
。你片段中的第一行是一种无操作方式:Python字符串是Python字符串,无论在输入文本时使用何种括号进行包裹。(并且字符串的默认表达形式是单引号 - " ' ") - jsbuenof'''"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'],
区别只在输入上,它们是相同的。
s = "hi"
t = 'hi'
s == t
真
你甚至可以这样做:
"hi" == 'hi'
真
提供两种方法是有用的,因为您可以直接在字符串中包含'
或"
,而无需转义。
json.dumps('dog')
输出到文件中的是'"dog"'
,但我想要的是"dog"
。该怎么做? - CKM在Python中,单引号和双引号括起来的字符串没有区别,所以我不知道为什么你要这样做。然而,如果你实际上是指字符串中的单引号字符,那么要用双引号替换它们,你可以这样做:mystring.replace('\'', '"')
string.replace("'", '"')
— 它在引号中有一种漂亮的交替模式 :-). - Alok Singhal实际上,据我所知,以上回答都没有回答问题,问题是如何将单引号字符串转换为双引号字符串,无论是否可以在Python中互换,都可以使用Python自动生成代码。
一个例子可以是尝试生成SQL语句,其中使用的引号可能非常重要,并且简单地在双引号和单引号之间进行替换可能并不那么简单(即,您可能有双引号包含在单引号中)。
print('INSERT INTO xx.xx VALUES' + str(tuple(['a',"b'c",'dfg'])) +';')
这将返回:
INSERT INTO xx.xx VALUES('a', "b'c", 'dfg');
目前我无法对这个问题给出清晰的答案,但是我认为值得提出来以防有人知道。如果我找到答案会再回来更新。
def toDouble(stmt):
return stmt.replace("'",'"')