1

「\n」や「\r」などのさまざまな python エスケープ文字を含む JSON の webapp からデータを取得します

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はこれらの文字を正当なものとして扱うため、sqlalchemyは自動的に多くのエスケープを行います. 四角に戻ります - 弦を正しく掃除する必要があります。

4

1 に答える 1

-1
import re

newbuff = re.sub("\n|\r| |moreoptions","",yourbuff)
于 2013-02-14T18:06:19.480 に答える