2015-06-22 12 views
6

मेरे पास निम्नानुसार सूची की एक पायथन सूची है। मैं इसे एक सूची में फटाना चाहता हूं।एक पायथन सूची से 'यू' निकालें

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

उत्पादन एल की तरह = [ '[190,215]'] ?? –

+1

'एल' एक एकल सूची है, जिसमें एक तत्व शामिल है, और वह तत्व 'यूनिकोड' प्रकार का है। यह एक स्ट्रिंग है जो '[1 921215]' की तरह दिखती है, यह ऐसी सूची नहीं है जिसका तत्व संख्या '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

u का अर्थ है unicode स्ट्रिंग जो उपयोग करने के लिए बिल्कुल ठीक होनी चाहिए। लेकिन यदि आप unicode से str (जो केवल पायथन 2 में सादे बाइट्स का प्रतिनिधित्व करता है) को परिवर्तित करना चाहते हैं तो आप encode पर utf-8 जैसे वर्ण एन्कोडिंग का उपयोग कर सकते हैं।

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

आप 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 लाइन में]]' यूनिकोडएनकोड त्रुटि: 'ascii' कोडेक 56-59 स्थिति में वर्णों को एन्कोड नहीं कर सकता: क्रमिक नहीं है (128) – Bhuro

+0

मूल डेटा जिसे मैं सामान्य स्ट्रिंग में परिवर्तित करना चाहता हूं फ़ाइल सीएसवी >> परिणाम '[u' "0000211504512150" ',' 'नया' ', u' "27.95" ', u' "sdjfgjdshf" ', यू' "0" ', यू' 'फाल्स "', यू '' '', यू '' '' ',' '' adfgugfius708vs" ',' 'एफबीआर' ', यू' 'फाल्स' ', यू '' NOT_ प्रकाशित ", '' '' ''] '..... जैसे फ़ाइल सीएसवी >> परिणाम' [" 0000211504512150 "," नया "," 27.95 "," sdjfgjdshf "," 0 "," गलत " , "", "", "adfgugfius708vs", "एफबीआर", "गलत", "NOT_ प्रकाशित", ""] ' – Bhuro

संबंधित मुद्दे