我正在使用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运行中引发语法错误。
实际上,密码查询语言支持''
和""
来指示字符串。
所以我的问题是,如果有一个聪明的方法,当变量昵称包含'
或"
时,格式化的字符串会自动使用正确的引号吗?
答案 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)