首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python中过滤包含非英文字符的字符串

在Python中过滤包含非英文字符的字符串
EN

Stack Overflow用户
提问于 2021-04-17 00:17:10
回答 1查看 29关注 0票数 2

举个例子,我有一个清单

items = ['www1bmobạnk.com', 'наш-переславль.рф', 'вольттек.рф', '別邸福の花浜松町店.com', 'благовест.рус', 'թարմլուր.հայ', '피시방.com', 'ått.com', '沃華科技.com', 'впамяти.рф', 'андрейбабкин.рф', '꽃셰프가.com', 'фортуна36.рф', 'わかば.com', 'тесты-на-коронавирус.рф', '第一個夏天.com', 'bëstchange.net', 'normaldomain.com']

我正在使用re.match过滤掉它们

代码语言:javascript
复制
for item in items:
    if re.match('[a-z0-9]', item):
        print("It's English! " + item)
    else:
        print("It's not! " + item)

问题是bëstchange.netwww1bmobạnk.com没有被过滤掉。我添加了[^ë],它适用于bëstchange.net,但[^ạ]不适用于www1bmobạnk.com。我也尝试过Unicode [\u0061-\u007A],但它几乎是一样的。

感谢您的建议!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-17 00:20:50

您可以检查字符串是否包含非ASCII字母:

代码语言:javascript
复制
import re
items = ['www1bmobạnk.com', 'наш-переславль.рф', 'вольттек.рф', '別邸福の花浜松町店.com', 'благовест.рус', 'թարմլուր.հայ', '피시방.com', 'ått.com', '沃華科技.com', 'впамяти.рф', 'андрейбабкин.рф', '꽃셰프가.com', 'фортуна36.рф', 'わかば.com', 'тесты-на-коронавирус.рф', '第一個夏天.com', 'bëstchange.net', 'normaldomain.com']
for item in items:
    if not re.search(r'(?![a-zA-Z])[^\W\d_]', item):
        print(f"It's English! {item}")
    else:
        print(f"It's not! {item}")

请参阅Python demo。现在只有normaldomain.com通过了测试。

ASCII码模式可以匹配任何Unicode字母(带有[^\W\d_]),但是(?![a-zA-Z])否定先行检查将限制此模式,使其不能匹配ASCII码字母。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67128773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档