python有没有一种智能的方法可以用引号格式化字符串?

2024-04-20 09:24:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用neo4jpython库来操作neo4j图形数据库。你知道吗

我需要格式化密码查询

query = 'create (n:Person {{nickname: "{0}"}}) return n;'.format(nickname)

如果昵称包含"本身,如A"B,则生成的查询将是

create (n:Person {nickname: "A"B"}) return n;这将在cql运行时引发语法错误。你知道吗

实际上,cypher查询语言支持''""来表示字符串。你知道吗

所以我的问题是,如果有一种聪明的方法,当变量昵称包含'"时,格式化的字符串会自动使用正确的引号吗?你知道吗


Tags: 字符串数据库format图形密码returncreatenickname
3条回答

您可以使用repr函数用正确的引号格式化字符串:

query = 'create (n:Person {{nickname: {0}}}) return n;'.format(repr(nickname))

因为它的行为正是您想要的,所以当字符串包含单引号时,用双引号将给定字符串括起来,当字符串包含双引号时,用单引号括起来:

>>> print(repr("A'B"))
"A'B"
>>> print(repr('A"B'))
'A"B'

你需要的是“引号转义”。最简单的方法是:

nickname='A"B'
query = 'create (n:Person {{nickname: "{0}"}}) return n;'.format(nickname.replace('"','\\"'))
print(query)

>>> 
create (n:Person {nickname: "A\"B"}) return n;

如果您想要更“正式”的方式,您可以执行以下操作:

import json
person = {'nickname': 'A"B'}
query = 'create (n:Person {0}) return n;'.format(json.dumps(person))
print(query)

您可以使用"""Lorem ipsum"""格式的字符串,它允许您使用符号和ascii字符。i、 电子

query = """create (n:Person {{nickname: "{0}"}}) return n;""".format(nickname)

You could also use single quotes and double qoutes in the string.

相关问题 更多 >