Python 如何有效地替换字符串中的双引号和单引号?
我正在解析一个xml文件并将其插入数据库。 然而,由于一些文本包含双引号或单引号,我在插入时遇到了问题。目前我使用的代码如下所示。但它似乎效率很低Python 如何有效地替换字符串中的双引号和单引号?,python,database,string,Python,Database,String,我正在解析一个xml文件并将其插入数据库。 然而,由于一些文本包含双引号或单引号,我在插入时遇到了问题。目前我使用的代码如下所示。但它似乎效率很低 s = s.replace('"', ' ') s = s.replace("'", ' ') 有没有办法在不替换这些引语的情况下插入文本 或 有没有有效的方法来替代它们 谢谢 为什么不能在数据库中插入包含引号的字符串?是否存在允许除引号外的任何字符的奇怪数据类型?或者您是在用文本字符串构建insert语句,而不是像您应该做的那样将字符串绑定到查询
s = s.replace('"', ' ')
s = s.replace("'", ' ')
有没有办法在不替换这些引语的情况下插入文本
或
有没有有效的方法来替代它们
谢谢 为什么不能在数据库中插入包含引号的字符串?是否存在允许除引号外的任何字符的奇怪数据类型?或者您是在用文本字符串构建
insert
语句,而不是像您应该做的那样将字符串绑定到查询参数
如果你正在做
cursor.execute('insert into mytable (somefield) values ("%s")' % (mystring))
那是不安全和错误的。相反,你应该这样做
cursor.execute('insert into mytable (somefield) values (%(myparam)s)',
dict(myparam=mystring))
您可以尝试类似于_mysql.escape_string()的方法:
但是,手册建议使用,但我认为您首先需要数据库连接。您应该使用
str.translate
而不是执行两次replace()
调用
>>> import string
>>> quotes_to_spaces=string.maketrans('"\''," ")
>>> s=s.translate(quotes_to_spaces)
>>> import string
>>> quotes_to_spaces=string.maketrans('"\''," ")
>>> s=s.translate(quotes_to_spaces)