我有以下python列表,
List= ['Images', 'Maps', 'Play', 'YouTube', 'News', 'Gmail', 'Drive', None,
'Web History', 'Settings', 'Sign in', 'Advanced search', 'Language tools',
'हिन्दी', 'বাংলা', 'తెలుగు', 'मराठी', 'தமிழ்', 'ગુજરાતી', 'ಕನ್ನಡ', 'മലയാളം',
'ਪੰਜਾਬੀ', 'Advertising\xa0Programs', 'Business Solutions', '+Google',
'About Google', 'Google.co.in', 'Privacy', 'Terms']
我想从该列表中过滤非英语关键字,并希望我的最终列表看起来像这样,
List=['हिन्दी', 'বাংলা', 'తెలుగు', 'मराठी', 'தமிழ்', 'ગુજરાતી', 'ಕನ್ನಡ', 'മലയാളം','ਪੰਜਾਬੀ']
使用Regex可以做到吗?我使用Python 3.x 感谢您的帮助!
答案 0 :(得分:2)
由于非英语字符都在7位ASCII范围内,因此您可以测试每个单词中的任何字符的序数是否大于127,并被str.isalpha()
视为字母:>
[w for w in List if w and any(ord(c) > 127 and c.isalpha() for c in w)]
使用示例输入,将返回:
['हिन्दी', 'বাংলা', 'తెలుగు', 'मराठी', 'தமிழ்', 'ગુજરાતી', 'ಕನ್ನಡ', 'മലയാളം', 'ਪੰਜਾਬੀ']
答案 1 :(得分:1)
在正则表达式中也可以使用。
import re
result = ["".join(re.findall("[^\u0000-\u05C0]",i)) for i in List if i is not None and re.findall("[^\u0000-\u05C0]",i)]
print (result)
结果:
['हिन्दी', 'বাংলা', 'తెలుగు', 'मराठी', 'தமிழ்', 'ગુજરાતી', 'ಕನ್ನಡ', 'മലയാളം', 'ਪੰਜਾਬੀ']