使用Python清理字符串中的转义字符
我从一个网页应用获取数据,这些数据是JSON格式的,里面包含了一些Python的转义字符,比如"\n"和"\r"。
我写了一个小函数,用来清理这些有问题的字符和空格,然后再把数据放到SQL里去用。(这些有问题的字符会影响到另一个使用SQL的应用程序)。
我现在的函数是:
bad_tokens = [",",";",".","!","'",".","-",'"',"@",r"\n",r"\r"]
from types import StringType, UnicodeType
def sql_text(sqltext, trim = None):
'''
helper function to clean text inserted to sql from Priority problematic characters specified bad_tokens
'''
thistype = type(sqltext)
if thistype not in (StringType, UnicodeType):
return sqltext
sqltext = sqltext.strip() #priority can't handle string starting with space
for token in bad_tokens:
sqltext = sqltext.replace(token,"")
sqltext = " ".join([i for i in sqltext.split(" ") if i != ""]) #priority can't handle string containing double spaces
if trim:
sqltext = sqltext[0:trim]
return sqltext
这个方法对普通字符有效,但似乎没有清理掉\n和\r这些转义符。把r(原始字符串)加到转义符上也没有帮助。
谢谢大家的帮助
补充说明:我在使用一个ORM(sqlalchemy),所以我并不是直接访问数据库API,而sqlalchemy会自动处理很多转义,因为SQL把这些字符当作合法字符,所以sqlalchemy也这样做。回到最初的问题 - 我需要正确清理这个字符串。
1 个回答
-1
这段代码是用来做一些特定操作的。它可能涉及到数据处理、计算或者其他功能。具体来说,代码块中的内容会根据不同的需求来执行不同的任务。你可以把它想象成一个工具箱,里面有各种工具,每个工具都有自己的用途。
如果你对代码的具体功能有疑问,可以尝试逐行理解它的意思,或者查找相关的资料来帮助你更好地理解。
import re
newbuff = re.sub("\n|\r| |moreoptions","",yourbuff)