繁体   English   中英

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

[英]How can I replace double and single quotations in a string efficiently?

我正在解析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))

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

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

你可以试试像_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() ,但我认为您首先需要数据库连接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM