将unicode列表转换为包含python字符串的列表的简单方法?

时间:2013-08-16 11:15:18

标签: python python-2.7 unicode encoding

列表的模板是:

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

我想从此转换

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

到此:

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

转换后,我实际上正在检查EmployeeList.values()中是否存在“1001”。

9 个答案:

答案 0 :(得分:49)

将列表中的每个值编码为字符串:

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

您需要选择有效的编码;不要使用str(),因为它将使用系统默认值(对于Python的ASCII),它不会对Unicode值中的所有可能代码点进行编码。

UTF-8能够编码所有Unicode标准,但ASCII范围之外的任何代码点都会导致每个字符有多个字节。

但是,如果您只想测试特定字符串,请测试 unicode 字符串,并且Python在测试时不必自动编码所有值:

u'1001' in EmployeeList.values()

答案 1 :(得分:19)

[str(x) for x in EmployeeList]会进行转换,但如果unicode字符串字符不在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)

答案 2 :(得分:13)

我们可以使用map功能

print map(str, EmployeeList)

答案 3 :(得分:5)

怎么样:

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 :(得分:5)

只需使用此代码

即可
EmployeeList = eval(EmployeeList)
EmployeeList = [str(x) for x in EmployeeList]

答案 5 :(得分:0)

只需使用

unicode_to_list = list(EmployeeList)

答案 6 :(得分:0)

有几种方法可以做到这一点。我像这样

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

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

之后,您可以检查

if '1001' in EmployeeList:
    #do something

希望它会对您有所帮助。

答案 7 :(得分:0)

您可以使用json和ast模块,如下所示

>>> 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$']

答案 8 :(得分:0)

只需json.dumps即可解决问题

json.dumps函数实际上将所有的unicode文字转换为字符串文字,这对我们来说很容易将数据加载到json文件或csv文件中。

示例代码:

import json
EmployeeList =  [u'1001', u'Karick', u'14-12-2020', u'1$']
result_list = json.dumps(EmployeeList)
print result_list

输出:[“ 1001”,“ Karick”,“ 14-12-2020”,“ 1 $”]