Skip to main content
 首页 » 编程设计

Python之从列表中删除元素(外来字符)

2025年05月04日13shangdawei

我有一个 python 列表,其中包含由一些 unicode 值表示的外来字符:

python_list = ['to', 'shrink', u'\u7e2e\u3080', u'\u3061\u3062\u3080', 'chijimu', 'tizimu', 'tidimu', 'to', 'continue', u'\u7d9a\u304f', u'\u3064\u3065\u304f', 'tsuzuku', 'tuzuku', 'tuduku', u'\u30ed\u30fc\u30de\u5b57\uff08\u30ed\u30fc\u30de\u3058\uff09\u3068\u306f\u3001\u4eee\u540d\u6587\u5b57\u3092\u30e9\u30c6\u30f3\u6587\u5b57\u306b\u8ee2\u5199\u3059\u308b\u969b\u306e\u898f\u5247\u5168\u822c\uff08\u30ed\u30fc\u30de\u5b57\u8868\u8a18\u6cd5\uff09\u3001\u307e\u305f\u306f\u30e9\u30c6\u30f3\u6587\u5b57\u3067\u8868\u8a18\u3055\u308c\u305f\u65e5\u672c\u8a9e\uff08\u30ed\u30fc\u30de\u5b57\u3064\u3065\u308a\u306e\u65e5\u672c\u8a9e\uff09\u3092\u8868\u3059\u3002']   

我需要删除所有带有“\u7e2e”或其他类似类型的项目。如果列表中的项目甚至包含 1 个 ascii 字母或单词,则不应将其排除在外。例如:'China\u3062' 应该包括在内。我提到了这个 question并意识到有一些与大于 128 的值相关的东西。尝试了像这样的不同方法:

new_list = [item for item in python_list if ord(item) < 128]   

但这会返回一个错误:

TypeError: ord() expected a character, but string of length 2 found 

预期输出:

new_list = ['to', 'shrink','chijimu', 'tizimu', 'tidimu', 'to', 'continue','tsuzuku', 'tuzuku', 'tuduku'] 

我该如何处理这个问题??

请您参考如下方法:

如果您希望保留所有包含至少一个 ascii 字母的单词,那么下面的代码可以做到这一点

from string import ascii_letters, punctuation 
 
python_list = ['to', 'shrink', u'\u7e2e\u3080', u'\u3061\u3062\u3080',  
               'chijimu','china,', 'tizimu', 'tidimu', 'to', 'continue',  
               u'\u7d9a\u304f', u'\u3064\u3065\u304f', 'tsuzuku', 'tuzuku', 'tuduku', u'china\u3061'] 
 
allowed = set(ascii_letters) 
 
output = [word for word in python_list if any(letter in allowed for letter in word)] 
print(output) 
# ['to', 
#  'shrink', 
#  'chijimu', 
#  'china,', 
#  'tizimu', 
#  'tidimu', 
#  'to', 
#  'continue' 
#  'tsuzuku', 
#  'tuzuku', 
#  'tuduku', 
#  'china?'] 

这将遍历每个单词的每个字母,如果 allowed 中也包含一个字母,那么它会将单词添加到您的 output 列表中。