我有一个列表的python列表如下.我想把它压平成一个列表.
l = [u'[190215]']
Run Code Online (Sandbox Code Playgroud)
我在尝试.
l = [item for value in l for item in value]
Run Code Online (Sandbox Code Playgroud)
它将列表转换为 [u'[', u'1', u'9', u'0', u'2', u'1', u'5', u']']
如何u
从列表中删除.
jam*_*lak 10
这u
意味着一个unicode
完全可以使用的字符串.但是如果你想转换unicode
为str
(它只代表Python 2中的普通字节)那么你可以encode
使用像utf-8
.这样的字符编码.
>>> items = [u'[190215]']
>>> [item.encode('utf-8') for item in items]
['[190215]']
Run Code Online (Sandbox Code Playgroud)
用 [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']
Run Code Online (Sandbox Code Playgroud)
在当前的代码中,您正在迭代一个表示列表的字符串,因此您可以获得各个字符。
>>> 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']']
Run Code Online (Sandbox Code Playgroud)
在我看来,您想将列表的内部字符串表示形式转换为扁平列表,所以您可以这样做:
>>> l = [u'[190215]']
>>> l = [item for value in l for item in literal_eval(value)]
>>> l
[190215]
Run Code Online (Sandbox Code Playgroud)
仅当所有内部列表都是字符串时,上面的代码才有效:
>>> 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
Run Code Online (Sandbox Code Playgroud)