从Python列表中过滤非英语关键字

时间:2018-10-11 03:16:37

标签: python regex list filter

我有以下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 感谢您的帮助!

2 个答案:

答案 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)

结果:

['हिन्दी', 'বাংলা', 'తెలుగు', 'मराठी', 'தமிழ்', 'ગુજરાતી', 'ಕನ್ನಡ', 'മലയാളം', 'ਪੰਜਾਬੀ']