从python列表中删除“u”

时间:2015-06-22 09:03:21

标签: python

我有一个列表的python列表如下。我想将它压缩成一个列表。

l = [u'[190215]']

我正在努力。

l = [item for value in l for item in value]

它将列表转换为[u'[', u'1', u'9', u'0', u'2', u'1', u'5', u']']

如何从列表中删除u

5 个答案:

答案 0 :(得分:9)

u表示unicode字符串,使用起来非常好。 但是如果你想将unicode转换为str(它只代表Python 2中的普通字节),那么你可以encode使用utf-8等字符编码。

>>> items = [u'[190215]']
>>> [item.encode('utf-8') for item in items]
['[190215]']

答案 1 :(得分:4)

使用[str(item) for item in list]

例如

>>> li = [u'a', u'b', u'c', u'd']
>>> print li
[u'a', u'b', u'c', u'd']
>>> li_u_removed = [str(i) for i in li]
>>> print li_u_removed
['a', 'b', 'c', 'd']

答案 2 :(得分:3)

您可以使用str将您的unicode转换为普通字符串:

>>> list(str(l[0]))
['[', '1', '9', '0', '2', '1', '5', ']']

答案 3 :(得分:2)

在您当前的代码中,您正在迭代一个表示列表的字符串,因此您将获得单个字符。

>>> from ast import literal_eval
>>> l = [u'[190215]']
>>> l = [item for value in l for item in value]
>>> l
[u'[', u'1', u'9', u'0', u'2', u'1', u'5', u']']

对我来说,你想把列表的内部字符串表示转换为扁平列表,所以在这里你去:

>>> l = [u'[190215]']
>>> l = [item for value in l for item in literal_eval(value)]
>>> l
[190215]

只有当所有内部列表都是字符串时,上述内容才有效:

>>> l = [u'[190215]', u'[190216, 190217]']
>>> l = [item for value in l for item in literal_eval(value)]
>>> l
[190215, 190216, 190217]
>>> l = [u'[190215]', u'[190216, 190217]', [12, 12]]
>>> l = [item for value in l for item in literal_eval(value)]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/ast.py", line 80, in literal_eval
    return _convert(node_or_string)
  File "/usr/lib/python2.7/ast.py", line 79, in _convert
    raise ValueError('malformed string')
ValueError: malformed string

答案 4 :(得分:0)

我认为此问题发生在python 2.7中,但在最新的python版本 u 中没有显示

l = [u'[190215]']
l = [item for value in l for item in value]
print(l)

输出- ['[', '1', '9', '0', '2', '1', '5', ']']

如果要将列表中的字符串项目连接为单个字符串,可以尝试以下代码

l = [u'[190215]']
l = [item for value in l for item in value]
l = ''.join(l)
print(l)

输出- [190215]