![](/img/trans.png)
[英]Is there a way to avoid double quotation in formatting strings which include quotations inside them in Python
[英]python - is there a intelligent way for formatting strings with quotations?
我正在使用neo4j
python lib来操作neo4j图形数据库。
我需要格式化密码查询
query = 'create (n:Person {{nickname: "{0}"}}) return n;'.format(nickname)
如果昵称包含"
本身像A"B
,则生成的查询将为
create (n:Person {nickname: "A"B"}) return n;
这将在cql运行中引发语法错误。
实际上,密码查询语言支持''
和""
来表示字符串。
所以我的问题是,如果有一个聪明的方法,当变量昵称包含'
或"
,格式化的字符串会自动使用正确的引号吗?
您可以使用"""Lorem ipsum"""
格式字符串,该字符串允许您使用符号和ascii字符。 即
query = """create (n:Person {{nickname: "{0}"}}) return n;""".format(nickname)
您还可以在字符串中使用单引号和双qoutes 。
您可以使用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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.