webentwicklung-frage-antwort-db.com.de

Einfache Möglichkeit, eine Unicode-Liste in eine Liste mit Python-Zeichenfolgen zu konvertieren?

Vorlage der Liste ist:

EmployeeList =  [u'<EmpId>', u'<Name>', u'<Doj>', u'<Salary>']

Ich möchte davon konvertieren

EmployeeList =  [u'1001', u'Karick', u'14-12-2020', u'1$']

zu diesem:

EmployeeList =  ['1001', 'Karick', '14-12-2020', '1$']

Nach der Konvertierung überprüfe ich tatsächlich, ob "1001" in EmployeeList.values ​​() vorhanden ist.

29
Karthick

Kodieren Sie jeden Wert in der Liste in eine Zeichenfolge:

[x.encode('UTF8') for x in EmployeeList]

Sie müssen eine gültige Kodierung auswählen. Verwenden Sie nicht str(), da dies den Systemstandard verwendet (für Python 2 ASCII), der nicht alle möglichen Codepunkte in einem Unicode-Wert codiert.

UTF-8 kann den gesamten Unicode-Standard kodieren, jeder Codepunkt außerhalb des Bereichs ASCII führt jedoch zu mehreren Bytes pro Zeichen.

Wenn Sie jedoch nur einen bestimmten String testen möchten, testen Sie einen Unicode String, und Python muss nicht alle Werte automatisch codieren, wenn Sie dies testen:

u'1001' in EmployeeList.values()
48
Martijn Pieters

[str(x) for x in EmployeeList] führt eine Konvertierung durch, die jedoch fehlschlägt, wenn die Unicode-Zeichenfolgen nicht im ASCII-Bereich liegen.

>>> EmployeeList = [u'1001', u'Karick', u'14-12-2020', u'1$']
>>> [str(x) for x in EmployeeList]
['1001', 'Karick', '14-12-2020', '1$']


>>> EmployeeList = [u'1001', u'करिक', u'14-12-2020', u'1$']
>>> [str(x) for x in EmployeeList]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128)
18
DhruvPathak

Wir können die Funktion map verwenden

print map(str, EmployeeList)
12
Mani

wie wäre es mit:

def fix_unicode(data):
    if isinstance(data, unicode):
        return data.encode('utf-8')
    Elif isinstance(data, dict):
        data = dict((fix_unicode(k), fix_unicode(data[k])) for k in data)
    Elif isinstance(data, list):
        for i in xrange(0, len(data)):
            data[i] = fix_unicode(data[i])
    return data
4
le_vine

Verwenden Sie einfach diesen Code

EmployeeList = eval(EmployeeList)
EmployeeList = [str(x) for x in EmployeeList]
4
Umar Asghar

Dafür gibt es mehrere Möglichkeiten. Ich habe mich so bekehrt

def clean(s):
    s = s.replace("u'","")
    return re.sub("[\[\]\'\s]", '', s)

EmployeeList = [clean(i) for i in str(EmployeeList).split(',')]

Danach können Sie überprüfen

if '1001' in EmployeeList:
    #do something

Ich hoffe es wird dir helfen.

0

Benutz einfach 

unicode_to_list = list(EmployeeList)
0
Manish Yadav

Verwenden Sie dazu die Module json und ast wie folgt

>>> import json, ast
>>>
>>> EmployeeList =  [u'1001', u'Karick', u'14-12-2020', u'1$']
>>>
>>> result_list = ast.literal_eval(json.dumps(EmployeeList))
>>> result_list
['1001', 'Karick', '14-12-2020', '1$']
0
Gopikrishna