使用python从转义字符清除字符串

时间:2013-02-14 18:00:45

标签: python string python-2.7 sqlalchemy

我从JSON中的webapp获取数据,其中包含各种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),因此我不直接访问DBApi,而sqlalchemy会自动执行大量转义,因为sql会将这些字符视为合法,因此sqlalchemy 。回到正方形 - 我需要正确清理字符串。

1 个答案:

答案 0 :(得分:-1)

import re

newbuff = re.sub("\n|\r| |moreoptions","",yourbuff)