Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在字符串python中的引号前插入\反斜杠_Python_Python 2.7_Escaping - Fatal编程技术网

如何在字符串python中的引号前插入\反斜杠

如何在字符串python中的引号前插入\反斜杠,python,python-2.7,escaping,Python,Python 2.7,Escaping,我想在字符串中的每个引号前插入\以使用pymysql将其插入我的SQL数据库。如果不转义引号,则无法在数据库中插入字符串 例如: str=“好的,我准备好了” 必须是: str=“好的,我准备好了” 但打印str必须是:“好的,我准备好了” 为了实现这一点,我做了以下工作: str = str.replace("'", "\'") 但它不起作用,我仍然无法在数据库中插入字符串。我收到了错误消息: (1064,u)“您的SQL语法有错误;请检查以下手册: 对应于您的MySQL服务器版本,以便使用

我想在字符串中的每个引号前插入\以使用pymysql将其插入我的SQL数据库。如果不转义引号,则无法在数据库中插入字符串

例如:

str=“好的,我准备好了”

必须是:

str=“好的,我准备好了”

但打印str必须是:“好的,我准备好了”

为了实现这一点,我做了以下工作:

str = str.replace("'", "\'")
但它不起作用,我仍然无法在数据库中插入字符串。我收到了错误消息:

(1064,u)“您的SQL语法有错误;请检查以下手册: 对应于您的MySQL服务器版本,以便使用正确的语法 near的语义搜索软件可以支持从直觉到直觉的一切 聊天机器人到searc'在第1行“):编程错误回溯(most 最近一次调用:文件“/var/task/setter_organizations.py”,第38行, 在handler structured_data.insert()文件中 “/var/task/setter_organizations.py”,插入部分第107行 self.rds.insertItem(self.type,self.data)文件“/var/task/rds/rds.py”, 第92行,插入项返回self.insert(req)文件 “/var/task/RDS/RDS.py”,第35行,插入受影响的行= self.cursor.execute(请求)文件“/var/task/RDS/pymysql/cursors.py”, 第166行,在执行结果=self.\u查询(查询)文件中 “/var/task/RDS/pymysql/cursors.py”,第322行,在查询conn.query(q)中 文件“/var/task/RDS/pymysql/connections.py”,查询中的第856行 self.\u受影响的行=self.\u读取\u查询\u结果(无缓冲=无缓冲) 文件“/var/task/RDS/pymysql/connections.py”,第1057行,在 _read\u query\u result result.read()文件“/var/task/RDS/pymysql/connections.py”,第1340行,在read中 第一个\u数据包=self.connection.\u读取\u数据包()文件 “/var/task/RDS/pymysql/connections.py”,第1014行,在读取数据包中 packet.check_error()文件“/var/task/RDS/pymysql/connections.py”,第行 393,在check\u error.raise\u mysql\u异常(self.\u数据)文件中 “var/task/RDS/pymysql/err.py”,第107行,在raise\u mysql\u异常中 raise ERRORCASE(errno,errval)编程错误:(1064,u)您有一个 SQL语法错误;请检查与您的SQL语法对应的手册 MySQL服务器版本的正确语法使用了near的语义 搜索软件可以支持从直观的聊天机器人到searc的所有功能 第1行“)

我也会打印我的字符串,但看不到\


有人知道我该怎么做吗?

您应该添加第二个
\

your_str= your_str.replace("'", "\\'")

您可以使用双齿隙:

str = "ok I\\'m ready"
编辑:
现在您已经澄清了,解决这个问题的方法是
json.dumps(“我”)
这是可行的,但不是OP想要的:

str = "ok I'm ready"
str = str.replace("'", "\\'")
print(str)
编辑:

请看这个问题:

还有另一个: 他们使用:

conn.escape_string()
编辑2: 请看这个:

并注意他们是如何使用占位符的:

cur.execute('UPDATE connections SET cmd=%s, client_new=1 where ip=%s', (command, ip))

如果您尝试此操作,将在终端中显示
“ok I\\\'m ready”
,实际上它的
“ok I'm ready”
您需要打印它

仅显示结果“\&”-实际上字符串是\&:

str = "ok I'm ready"
str = str.replace("'", "\\'")


没问题,只需在文本前使用
r
,如下所示:

str = r"ok I\'m ready"

无需更换。

“它不工作”不是一个足够精确的错误描述,我们无法帮助您。什么不起作用?它怎么不工作?你的代码有什么问题?你收到错误信息了吗?错误消息是什么?你得到的结果不是你期望的结果吗?你期望得到什么样的结果?为什么?你会得到什么样的结果?两者有什么不同?你观察到的行为是否不是期望的行为?期望的行为是什么?为什么?观察到的行为是什么?它们以什么方式不同?这是因为\是转义字符。添加另一个字符,您就很好了。所以基本上,当您使用SQL查询将其插入SQL数据库时,您希望转义这些字符,对吗?是的,就是@code_byter@JakyChane请看我的编辑。谢谢你的回答,但确实是这样的:好的,我准备好打印了,如果我再放一个\@JakyChane,这不是你期望的吗?这就是你你想对吗?这是不对的。不明白为什么这个答案得到了几票赞成票。作为助手,请尝试在解释器中使用repr(s.replace(“'”,“\”)来考虑字符串表示;另外,请不要隐藏内置的
str
,使用其他名称,但我不想看到\当我打印字符串时…@JakyChane,这就是您在描述中提到的。谢谢您的帮助@code\u byter,我使用的是pymysql,我不知道如何使用escape\u字符串it@JakyChanecheck my edit
r
表示字符串将被视为原始字符串。那么,如何将“r”添加到包含“%”的字符串变量中?
print str  # python 2

print(str) # python 3
str = r"ok I\'m ready"