如何有效地替换字符串中的双引号和单引号?

如何有效地替换字符串中的双引号和单引号?

问题描述:

我正在解析一个xml文件并将其插入到数据库中。 但是,由于一些文本包含双引号或单引号,我在插入时遇到问题。目前我正在使用下面显示的代码。但它似乎效率低下。如何有效地替换字符串中的双引号和单引号?

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():

>>> import _mysql 
>>> a = '''I said, "Don't do that"''' 
>>> a 
'I said, "Don\'t do that"' 
>>> _mysql.escape_string(a) 
'I said, \\"Don\\\'t do that\\"' 

但是,手册建议使用connection.escape_string(),但我认为你首先需要一个数据库连接。

你应该使用str.translate,而不是做两个replace()电话

>>> import string 
>>> quotes_to_spaces=string.maketrans('"\''," ") 
>>> s=s.translate(quotes_to_spaces)