2015-06-22 221 views
6

我有一个列表的python列表,如下所示。我想把它压平成一个单子。从python列表中删除'u'

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

+0

输出像L = [ '[190215]'] ?? –

+1

'l'是一个单一的列表,由一个元素组成,该元素的类型为'unicode'。这是一个看起来像'[190215]'的字符串,它不是一个列表,其元素是数字'190215'。你能准确地说出你期望的结果吗? –

回答

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 
8

uunicode字符串应该是完全正常使用。 但是,如果你想unicode转换为str(这只是代表在Python 2平原字节),那么你可以使用的字符编码encode它如utf-8

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

您可以将您的Unicode转换成普通字符串str

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

使用[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'] 
+0

在我的情况.... – Bhuro

+0

'result1.append不工作([STR(i)用于i的行])' UnicodeEncodeError: 'ASCII' 编解码器不能在56-59位置编码字符:顺序不在范围内(128) – Bhuro

+0

其中欲被转换成正常的字符串 文件CSV原始数据>>结果'[U ' “0000211504512150”',U ' “NEW”',U ' “27.95”',U' “sdjfgjdshf” ',u'“0”',u'“FALSE”',''''','''''','''','''',''FBR'',''FALSE'',u ''NOT_PUBLISHED'',u'“'']'..... like file csv >> result'[”0000211504512150“,”NEW“,”27.95“,”sdjfgjdshf“,”0“,”FALSE“ ,“”,“”,“adfgugfius708vs”,“FBR”,“FALSE”,“NOT_PUBLISHED”,“”] – Bhuro