Bri*_* Li 44 python unicode google-app-engine
我已阅读删除列表中的字符'u',但我使用谷歌应用程序引擎,它似乎不起作用!
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
Run Code Online (Sandbox Code Playgroud)
最终输出:
[u'{email:test@gmail.com,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}']
Run Code Online (Sandbox Code Playgroud)
unw*_*ind 50
'u'是字符串外部表示的一部分,这意味着它是一个Unicode字符串而不是字节字符串.它不在字符串中,它是该类型的一部分.
例如,您可以使用相同的synax创建新的Unicode字符串文字.例如:
>>> sandwich = u"smörgås"
>>> sandwich
u'sm\xf6rg\xe5s'
Run Code Online (Sandbox Code Playgroud)
这将创建一个新的Unicode字符串,其值为三明治的瑞典语.您可以看到非英文字符由其Unicode代码点表示,ö是\xf6和å \xe5.'u'前缀与您的示例中的内容类似,表示此字符串包含Unicode文本.
要摆脱这些,您需要将Unicode字符串编码为一些面向字节的表示形式,例如UTF-8.你可以用例如:
>>> sandwich.encode("utf-8")
'sm\xc3\xb6rg\xc3\xa5s'
Run Code Online (Sandbox Code Playgroud)
在这里,我们得到一个没有前缀'u'的新字符串,因为这是一个字节字符串.它包含表示Unicode字符串字符的字节,由于UTF-8编码的奇迹,瑞典字符导致多个字节.
ana*_*cky 18
arr = [str(r) for r in arr]
Run Code Online (Sandbox Code Playgroud)
这基本上会转换为字符串中的所有元素.因此删除了编码.因此,表示编码的u被删除将轻松有效地完成工作
Int*_*tra 13
你的意思是字符串是unicode.将所有字符串翻译为ascii以摆脱它:
a.encode('ascii', 'ignore')
Run Code Online (Sandbox Code Playgroud)
jfs*_*jfs 11
u'AB'只是相应Unicode字符串的文本表示.以下是几种创建完全相同的Unicode字符串的方法:
L = [u'AB', u'\x41\x42', u'\u0041\u0042', unichr(65) + unichr(66)]
print u", ".join(L)
Run Code Online (Sandbox Code Playgroud)
AB, AB, AB, AB
Run Code Online (Sandbox Code Playgroud)
有没有u''在记忆.这只是的方式表示了unicode在Python 2的对象(你会怎么写的Unicode字符串在Python文字的源代码).默认情况下print L等效于print "[%s]" % ", ".join(map(repr, L))ie,为每个列表项调用repr()函数:
print L
print "[%s]" % ", ".join(map(repr, L))
Run Code Online (Sandbox Code Playgroud)
[u'AB', u'AB', u'AB', u'AB']
[u'AB', u'AB', u'AB', u'AB']
Run Code Online (Sandbox Code Playgroud)
如果您正在使用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
Run Code Online (Sandbox Code Playgroud)
不要编码为字节.直接打印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)
Run Code Online (Sandbox Code Playgroud)
[{'email': u'test@gmail.com', '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": "test@gmail.com", "gem": 0}, {"email": "test", "gem": 0}, {"email": "test", "gem": 0}, {"email": "test", "gem": 0}, {"email": "test", "gem": 0}, {"email": "test1", "gem": 0}]
Run Code Online (Sandbox Code Playgroud)
小智 5
[u'{email:test@gmail.com,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}']
Run Code Online (Sandbox Code Playgroud)
'u' 表示 unicode 字符。我们可以使用最终列表元素上的 map 函数轻松删除它
map(str, test)
Run Code Online (Sandbox Code Playgroud)
另一种方法是当您将其附加到列表时
test.append(str(a))
Run Code Online (Sandbox Code Playgroud)
请使用map()Python函数。
输入:如果是值列表
索引 =[u'CARBO1004' u'CARBO1006' u'CARBO1008' u'CARBO1009' u'CARBO1020']
encoded_string = map(str, index)
Run Code Online (Sandbox Code Playgroud)
输出:['CARBO1004', 'CARBO1006', 'CARBO1008', 'CARBO1009', 'CARBO1020']
对于单个字符串输入:
index = u'CARBO1004'
# Use Any one of the encoding scheme.
index.encode("utf-8") # To utf-8 encoding scheme
index.encode('ascii', 'ignore') # To Ignore Encoding Errors and set to default scheme
Run Code Online (Sandbox Code Playgroud)
输出:'CARBO1004'
| 归档时间: |
|
| 查看次数: |
137914 次 |
| 最近记录: |