簡體   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