Подтвердить что ты не робот

Удаление u в списке

Я прочитал об удалении символа "u" в списке, но я использую механизм Google для работы с Google, и он не работает!

def get(self):
    players = db.GqlQuery("SELECT * FROM Player")
    print players
    playerInfo  = {}

    test = []

    for player in players:
        email =  player.email
        gem =  str(player.gem)
        a = "{email:"+email + ",gem:" +gem +"}"

        test.append(a)


    ast.literal_eval(json.dumps(test))
    print test

Конечный вывод:

[u'{email:[email protected],gem:0}', u'{email:test,gem:0}', u'{email:test,gem:0}', u'{email:test,gem:0}', u'{email:test,gem:0}', u'{email:test1,gem:0}']
4b9b3361

Ответ 1

Это 'u' является частью внешнего представления строки, что означает строку Unicode, а не строку байта. Это не в строке, это часть типа.

В качестве примера вы можете создать новый строковый литерал Юникода, используя тот же синтаксис. Например:

>>> sandwich = u"smörgås"
>>> sandwich
u'sm\xf6rg\xe5s'

Это создает новую строку Юникода, значение которой является шведским словом для сэндвича. Вы можете видеть, что символы, отличные от английского, представлены их кодовыми точками Unicode, ö is \xf6 и å is \xe5. Префикс 'u' отображается так же, как в вашем примере, чтобы обозначить, что эта строка содержит текст Unicode.

Чтобы избавиться от них, вам нужно закодировать строку Юникода в какое-то байт-ориентированное представление, такое как UTF-8. Вы можете сделать это, например:

>>> sandwich.encode("utf-8")
'sm\xc3\xb6rg\xc3\xa5s'

Здесь мы получаем новую строку без префикса 'u', так как это байтовая строка. Он содержит байты, представляющие символы строки Юникода, со шведскими символами, что приводит к появлению нескольких байтов из-за чудес в кодировке UTF-8.

Ответ 2

u означает, что строки являются unicode. Переведите все строки в ascii, чтобы избавиться от него:

a.encode('ascii', 'ignore')

Ответ 3

arr = [str(r) for r in arr]

Это в основном преобразует все ваши элементы в строку. Следовательно, удаляется кодировка. Следовательно, u, который представляет кодирование, удаляется Будут делать работу легко и эффективно

Ответ 4

u'AB' - это просто текстовое представление соответствующей строки Unicode. Вот несколько методов, которые создают точно такую ​​же строку Unicode:

L = [u'AB', u'\x41\x42', u'\u0041\u0042', unichr(65) + unichr(66)]
print u", ".join(L)

Выход

AB, AB, AB, AB

В памяти нет u''. Это просто способ представления объекта unicode в Python 2 (как вы должны писать строковый литерал Unicode в исходном коде Python). По умолчанию print L эквивалентно print "[%s]" % ", ".join(map(repr, L)), т.е. Для каждого элемента списка вызывается repr() function:

print L
print "[%s]" % ", ".join(map(repr, L))

Выход

[u'AB', u'AB', u'AB', u'AB']
[u'AB', u'AB', u'AB', u'AB']

Если вы работаете в REPL, то настраивается sys.displayhook, который вызывает repr() для каждого объекта по умолчанию:

>>> L = [u'AB', u'\x41\x42', u'\u0041\u0042', unichr(65) + unichr(66)]
>>> L
[u'AB', u'AB', u'AB', u'AB']
>>> ", ".join(L)
u'AB, AB, AB, AB'
>>> print ", ".join(L)
AB, AB, AB, AB

Не кодировать в байты. Печать unicode напрямую.


В вашем конкретном случае я бы создал список Python и использовал json.dumps() для его сериализации вместо использования форматирования строк для создания текста JSON:

#!/usr/bin/env python2
import json
# ...
test = [dict(email=player.email, gem=player.gem)
        for player in players]
print test
print json.dumps(test)

Выход

[{'email': u'[email protected]', 'gem': 0}, {'email': u'test', 'gem': 0}, {'email': u'test', 'gem': 0}, {'email': u'test', 'gem': 0}, {'email': u'test', 'gem': 0}, {'email': u'test1', 'gem': 0}]
[{"email": "[email protected]", "gem": 0}, {"email": "test", "gem": 0}, {"email": "test", "gem": 0}, {"email": "test", "gem": 0}, {"email": "test", "gem": 0}, {"email": "test1", "gem": 0}]

Ответ 5

Вы не "удаляете символ" u "из списка", вы кодируете строки Unicode. На самом деле строки, которые у вас есть, отлично подходят для большинства применений; вам просто нужно будет закодировать их соответствующим образом, прежде чем выводить их.

Ответ 6

[u'{email:[email protected],gem:0}', u'{email:test,gem:0}', u'{email:test,gem:0}', u'{email:test,gem:0}', u'{email:test,gem:0}', u'{email:test1,gem:0}']

'u' обозначает символы Unicode. Мы можем легко удалить это с помощью функции отображения в конечном элементе списка

map(str, test)

Другим способом является добавление его в список

test.append(str(a))

Ответ 7

Для наборов данных Python вы можете использовать индекс.

tmpColumnsSQL = ("show columns in dim.date_dim")
hiveCursor.execute(tmpColumnsSQL)
columnlist = hiveCursor.fetchall()

for columns in jayscolumnlist:
    print columns[0]

for i in range(len(jayscolumnlist)):    
    print columns[i][0])