将单引号字符串转换为双引号字符串

Kum*_*mar 23 python string

我想检查给定的字符串是单引号还是双引号.如果它是单引号我想将它转换为双引号,否则它必须是相同的双引号.

jsb*_*eno 15

Python中"single quoted"和"double quoted"strigns之间没有区别:两者都在内部解析为字符串对象.

我的意思是:

a = "European Swallow"
b = 'African Swallow'
Run Code Online (Sandbox Code Playgroud)

是内部字符串对象.

但是,您可能需要在字符串对象中添加额外的引号,以便在打印/导出时内容本身显示引用?

c = "'Unladen Swallow'" 
Run Code Online (Sandbox Code Playgroud)

啊 - 鉴于澄清(由Kumar发布为commetn,bellow):

如果在字符串中混合使用引号,例如:

a ="""风流"圣诞节"!快乐的'新年'!"""

然后你可以使用"替换"方法将所有转换为一种类型:

a = a.replace('"', "'") 
Run Code Online (Sandbox Code Playgroud)

如果碰巧有嵌套字符串,那么首先将现有引号替换为转义引号,然后将otuer引用:

a = """This is an example: "containing 'nested' strings" """
a = a.replace("'", "\\\'")
a = a.replace('"', "'")
Run Code Online (Sandbox Code Playgroud)

  • 当使用`json`时,它会在`'''和``".`中的字符串之间产生很大的差异 (8认同)
  • `json.dumps('dog')` 输出 `'"dog"'` 到文件,但我想要 `"dog"`。怎么做? (3认同)
  • `json.dumps` 创建一个 Python 字符串 - 如果您在交互模式下查看它,您将看到“dog”周围的额外引号 - 但如果您将其写入文件(或直接使用 `json.dump`,使用单层引号,如果需要零引号,需要在json序列化后手动剥离。 (2认同)

Mad*_*sVJ 11

听起来你正在和json合作.我会确保它总是像这样双重调整:

doubleQString = "{0}".format('my normal string')
with open('sampledict.json','w') as f:
    json.dump(doubleQString ,f)
Run Code Online (Sandbox Code Playgroud)

注意我正在使用dump,而不是 dumps.

Sampledict.json 将如下所示:

"my normal string"
Run Code Online (Sandbox Code Playgroud)

  • 这是一个很好的答案,如果您不想导出到文件,“json.dumps”将返回字符串。 (2认同)

Bri*_*ndy 6

区别仅在于输入.他们是一样的.

s = "hi"
t = 'hi'
s == t
Run Code Online (Sandbox Code Playgroud)

真正

你甚至可以这样做:

"hi" == 'hi'
Run Code Online (Sandbox Code Playgroud)

真正

提供这两种方法很有用,因为您可以让您的字符串包含'"直接包含转义.


Koc*_*T9H 6

在我来说,我需要打印列表JSON格式。这对我有用:

f'''"inputs" : {str(vec).replace("'", '"')},\n'''
Run Code Online (Sandbox Code Playgroud)

输出:

"inputs" : ["Input_Vector0_0_0", "Input_Vector0_0_1"],
Run Code Online (Sandbox Code Playgroud)

未更换前:

f'"inputs" : {vec},\n'

"inputs" : ['Input_Vector0_0_0', 'Input_Vector0_0_1'],
Run Code Online (Sandbox Code Playgroud)


Ben*_*den 5

在Python中,单引号或双引号的字符串之间没有区别,所以我不知道您为什么要这样做。但是,如果您实际上是在字符串中指单引号字符,然后将其替换为双引号,则可以执行以下操作:mystring.replace('\'', '"')

  • 我更喜欢`string.replace("'", '"')` 稍微好一点—它有一个很好的引号交替模式:-)。 (2认同)