繁体   English   中英

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM