[英]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.