Le modèle de la liste est:
EmployeeList = [u'<EmpId>', u'<Name>', u'<Doj>', u'<Salary>']
Je voudrais convertir à partir de cela
EmployeeList = [u'1001', u'Karick', u'14-12-2020', u'1$']
pour ça:
EmployeeList = ['1001', 'Karick', '14-12-2020', '1$']
Après la conversion, je vérifie réellement si "1001" existe dans EmployeeList.values ().
Encode chaque valeur de la liste en une chaîne:
[x.encode('UTF8') for x in EmployeeList]
Vous devez choisir un encodage valide. n'utilisez pas str()
car cela utilisera la valeur par défaut du système (pour Python 2, c'est-à-dire ASCII) qui ne codera pas tous les points de code possibles dans une valeur Unicode.
UTF-8 est capable de coder tout le standard Unicode, mais tout point de code en dehors de la plage ASCII donnera lieu à plusieurs octets par caractère.
Cependant, si vous souhaitez uniquement tester une chaîne spécifique, recherchez une chaîne unicode et Python n'aura pas à encoder automatiquement toutes les valeurs lors du test:
u'1001' in EmployeeList.values()
[str(x) for x in EmployeeList]
effectuerait une conversion, mais échouerait si les caractères de chaîne Unicode ne se trouvaient pas dans la plage ascii.
>>> 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)
On peut utiliser la fonction map
print map(str, EmployeeList)
que diriez-vous:
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
Utilisez simplement ce code
EmployeeList = eval(EmployeeList)
EmployeeList = [str(x) for x in EmployeeList]
Il y a plusieurs moyens de le faire. J'ai converti comme ça
def clean(s):
s = s.replace("u'","")
return re.sub("[\[\]\'\s]", '', s)
EmployeeList = [clean(i) for i in str(EmployeeList).split(',')]
Après cela, vous pouvez vérifier
if '1001' in EmployeeList:
#do something
J'espère que cela vous aidera.
Juste utiliser
unicode_to_list = list(EmployeeList)
Vous pouvez le faire en utilisant les modules json et ast comme suit
>>> 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$']