python-有没有一种聪明的方法来格式化带引号的字符串?

时间:2019-02-21 05:58:18

标签: python neo4j

我正在使用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运行中引发语法错误。

实际上,密码查询语言支持''""来指示字符串。

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

3 个答案:

答案 0 :(得分:2)

您可以使用"""Lorem ipsum"""格式的字符串,该字符串允许您使用符号和ascii字符。即

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

您还可以在字符串中使用单引号双qoutes

答案 1 :(得分:2)

您可以使用while (data.moveToNext()) { theList.add(data.getString(0)); } ListAdapter listAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, thelist); listView.setAdapter(listAdapter); listView.setOnItemClickListener( new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { Fragment grades = new grades(); FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.replace(R.id.frg, grades).commit(); } } ); 函数来格式化带有正确引号的字符串:

repr

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

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

答案 2 :(得分:2)

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

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)