복붙노트

[PYTHON] 파이썬 사전 : u '문자 제거하기

PYTHON

파이썬 사전 : u '문자 제거하기

다음 사전에서 u 문자를 제거하려면 어떻게합니까?

{u'name': u'A', u'primary_key': 1}  

이 데이터는 Mongo Database find () 쿼리에서 가져옵니다.

그렇게 보입니다.

{'name': 'A', 'primary_key': 1}

해결법

  1. ==============================

    1.Sqlite3와 같은 일부 데이터베이스에서는 변환기와 어댑터 함수를 정의 할 수 있으므로 유니 코드가 아닌 str으로 텍스트를 검색 할 수 있습니다. 불행하게도 MongoDB는 str, decimal 또는 datetime과 같이 일반적으로 필요한 유형에 대해이 옵션을 제공하지 않습니다.

    Sqlite3와 같은 일부 데이터베이스에서는 변환기와 어댑터 함수를 정의 할 수 있으므로 유니 코드가 아닌 str으로 텍스트를 검색 할 수 있습니다. 불행하게도 MongoDB는 str, decimal 또는 datetime과 같이 일반적으로 필요한 유형에 대해이 옵션을 제공하지 않습니다.

    Mongo 옵션을 제거하면 데이터를 검색 한 후 파이썬 코드를 작성하여 변환을 수행합니다. 결과를 탐색하여 각 필드를 변환하는 재귀 함수를 작성할 수 있습니다.

    빠르고 지저분한 대안으로 여기에 사용할 수있는 약간의 해킹이 있습니다.

    >>> import json, ast
    >>> r = {u'name': u'A', u'primary_key': 1}
    >>> ast.literal_eval(json.dumps(r))
    {'name': 'A', 'primary_key': 1}
    
  2. ==============================

    2.보고있는 u 문자는 단순히 유니 코드 문자열임을 의미합니다.

    보고있는 u 문자는 단순히 유니 코드 문자열임을 의미합니다.

    유니 코드로 만들지 않으려면 ASCII와 같은 다른 인코딩으로 인코딩 할 수 있습니다.

    >>> s = u'hi!'
    >>> s
    u'hi'
    
    >>> s2 = s.encode('ascii')
    >>> s2
    'hi'
    
  3. ==============================

    3.psycopg2가 문자열을 인코딩하도록하고, 파이썬 구문 문자열을 쿼리에 삽입하지 말아야합니다. 일부 문자열에 SQL이 문자열을 끝내는 것으로 해석 할 문자가 포함되어 있으면 SQL 주입 문제의 위험에 처하게됩니다. 다음과 같이 psycopg2에 매개 변수를 전달해야합니다.

    psycopg2가 문자열을 인코딩하도록하고, 파이썬 구문 문자열을 쿼리에 삽입하지 말아야합니다. 일부 문자열에 SQL이 문자열을 끝내는 것으로 해석 할 문자가 포함되어 있으면 SQL 주입 문제의 위험에 처하게됩니다. 다음과 같이 psycopg2에 매개 변수를 전달해야합니다.

    cursor.execute('INSERT INTO person (name, town) VALUES (%s %s)', (name, town))
    

    psycopg2 아주, 아주 잘 SQL 구문을 알고 있기 때문에 그것은 당신의 이름과 마을 문자열과 따옴표를 얻고,이 SQL 문이 필요로 정확히 방법으로 그들을 탈출로, 그것은 U 문자를 떠날 것이다.

  4. ==============================

    4.dict을 json 데이터 문자열로 변환하려는 경우 다음을 수행 할 수 있습니다.

    dict을 json 데이터 문자열로 변환하려는 경우 다음을 수행 할 수 있습니다.

    >>> from bson.json_util import dumps
    >>> data = {u'name': u'A', u'primary_key': 1}
    >>> dumps(data)
    '{"name": "A", "primary_key": 1}'
    
  5. ==============================

    5.sven이 그의 코멘트에서 언급했듯이, u는 mongodb에 표시된 유형을 나타냅니다 (실제로는 json이 유니 코드를 사용하도록 정의 되었기 때문입니다).

    sven이 그의 코멘트에서 언급했듯이, u는 mongodb에 표시된 유형을 나타냅니다 (실제로는 json이 유니 코드를 사용하도록 정의 되었기 때문입니다).

    이 사실은 여러분에게 완전히 투명해야합니다. 실제로 dicts에서 str과 unicode 값을 상호 교환 적으로 사용할 수 있습니다.

    >>> 'foo' in {u'foo': 5}
    True
    >>> {u'foo': 5}['foo']
    5
    >>> 
    
  6. ==============================

    6.문자열이 Unicode로되어 있다는 것을 상징적으로 나타내는 문자열에서 u를 단순히 제거 할 수 없습니다.

    문자열이 Unicode로되어 있다는 것을 상징적으로 나타내는 문자열에서 u를 단순히 제거 할 수 없습니다.

    한 가지 해결책은 encode 함수를 사용하는 것입니다.

    old_strings = {u'name':u'A', u'primary_key':1}
    newstrings = {}
    for k in old_strings.keys():
        newtsrings[k] = old_strings[k].encode('ascii','ignore')
    

    이것은 비 ASCII 문자를 무시합니다.

  7. from https://stackoverflow.com/questions/8101649/python-dictionary-removing-u-chars by cc-by-sa and MIT license