Skip to main content
 首页 » 编程设计

Python之如果项目是字符串,则将列表项目转换为 unicode

2025年05月04日23oomusou

我有一个可以混合 str 和 unicode 字符串的列表:

lst = ['string1', u'string2', 'string3', u'string4'] 

如果项目是 str,我需要将每个列表项目转换为 unicode。要将 str 转换为 unicode,我使用:

s = s.decode('utf-8') 

问题是,如果字符串已经是 unicode 并且包含非 ascii 字符,如果我尝试解码它,我会得到 UnicodeEncodeError: 'ascii' codec can't encode character ...

所以我想是这样的:

lst = [i.decode('utf-8') for i in lst if isinstance(i, str)] 

但这实际上从列表中删除了 unicode 字符串。

请您参考如下方法:

你在过滤(去除不匹配的元素);你需要使用 conditional expression相反:

lst = [i.decode('utf-8') if isinstance(i, str) else i for i in lst] 

<true> if <condition> else <false>这里的表达式总是产生一个输出。这是解码后的字符串,如果不是 str,则为未更改的原始对象。对象。