繁体   English   中英

在Python中以ASCII编码列表

[英]Encode a list in ASCII in Python

我想用ASCII编码一个列表。

我的列表:

data = {u'ismaster': True, u'maxWriteBatchSize': 1000, u'ok': 1.0, u'maxWireVersion': 3, u'minWireVersion': 0}

我的目标:

data = {'ismaster': True, 'maxWriteBatchSize': 1000, 'ok': 1.0, 'maxWireVersion': 3, 'minWireVersion': 0}

目前,我这样做:

>>>data_encode = [x.encode('ascii') for x in data]
>>>print(data_encode)
['maxWireVersion', 'ismaster', 'maxWriteBatchSize', 'ok', 'minWireVersion']

请参阅网站以转换字符串列表

我用这种方法失去了一些价值。

这是因为您要转换为实际列表,但最初有字典。 只要这样做:

data = {key.encode("ascii"): value for key, value in data.items()}

您使用的是列表理解 ,但是您想要的是字典理解。

字符串值前面的'u'表示该字符串已表示为unicode 这是一种比普通ASCII表示更多字符的方法。

如果字典中包含特殊字符,您将最终遇到问题

strangeKey = u'Ознакомьтесь с документацией'

表示为u'\О\з\н\а\к\о\м\ь\т\е\с\ь \с \д\о\к\у\м\е\н\т\а\ц\и\е\й'

 asciirep = strangeKey.encode("ascii")

将引发此错误

SyntaxError: Non-ASCII character '\xd0' in ...

如果仍然需要,但有引发一些例外的风险,可以使用以下命令

  • 从Python 2.7和3开始,您可以直接使用dict comprehension语法:

    d = {key.encode("ascii"): value for (key, value) in data.items()}

  • 在Python 2.6和更早版本中,您需要使用dict构造函数:

    d = dict((key.encode("ascii"), value) for (key, value) in data.items())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM