Python中如何使用RegEx删除字符串中不包含字母的行
解决代码
import re string = '''हिरासत में ली गई महिला 36 वर्षीय नूर सजात कमरुज़्ज़मा थीं British High Commissioner Greets पत्ता आंबेडकर चौक, निमशीरगाव, निमिशरगाव, निरमशिरगाव, कोल्हापूर, NIMSHIRGAON, Nimshirgaon, Address: ambedkar chowk, महाराष्ट्र, 416101 Nimshirgaon, Kolhapur, Maharashtra, 416101 1832 1947''' filtered_lines = [] for line in string.splitlines(): stripped = line.strip() # 过滤空行 if not stripped: continue # 过滤含非ASCII字符的行,且行内至少包含一个字母或数字 if all(ord(c) < 128 for c in stripped) and re.search(r'[a-zA-Z0-9]', stripped): filtered_lines.append(line) output = '\n'.join(filtered_lines) print(output)
逻辑说明
- 用
splitlines()拆分原始字符串为独立行,适配不同系统的换行符格式 - 优先过滤空行,减少后续无效判断
- 通过
ord(c) < 128判断字符是否属于ASCII范围,自动过滤包含天城文等非目标语种字符的行 - 正则
[a-zA-Z0-9]确保保留的行至少包含一个拉丁字母或阿拉伯数字,避免全为标点、空格的无效行被误保留 - 如果不需要保留原始行的前置缩进,将
append(line)改为append(stripped)即可
内容的提问来源于stack exchange,提问作者BhuriStray
相关产品推荐
相关产品推荐

