如何用Python筛选无大写/数字/特殊字符且长度≤10的荷兰语词?
荷兰语词汇筛选方案(修正代码错误)
需求说明
我有一个包含全部荷兰语词汇的文本文件,需要筛选出仅含小写字母、长度不超过10个字符的词汇。手动处理40万条词汇效率极低,想用Python实现,但作为新手编写的代码存在词汇拼接、拆分错误,现寻求简洁可行的代码方案,要求移除含大写字母、数字、特殊字符的词汇,以及长度超过10字符的词汇。
原错误代码
import re input_file = open("basiswoorden-gekeurd.txt", "r+") output_file = open("word_crumble_wordlist.txt", "w") filetext = input_file.read() res_caps = re.sub(r"\s*[A-Z]\w*\s*", " ", filetext).strip() res_dig = re.sub(r"\s*\d\w*\s*", "", res_caps).strip() res = re.sub(r"[^a-zA-Z0-9\n\.]\w*\s*", "", res_dig).strip() for line in res: if len(line) < 10: output_file.write(line)
原代码问题点
- 一次性读取整个文本后用正则替换,会将不符合要求的词汇替换为空格/空内容,导致原本分行的词汇被错误拼接成一个长词
- 循环遍历
res时是按单个字符遍历,而非按行/词汇遍历,逻辑完全错误
修正后的代码
import re # 用with语句自动管理文件,避免资源泄漏 with open("basiswoorden-gekeurd.txt", "r", encoding="utf-8") as input_file, \ open("word_crumble_wordlist.txt", "w", encoding="utf-8") as output_file: # 正则匹配纯小写字母(若需保留荷兰语变音符号如ëïüö,改为r'^[a-zëïüö]+$') valid_word_pattern = re.compile(r'^[a-z]+$') for line in input_file: word = line.strip() # 去除每行首尾的换行、空格等 # 同时满足:纯小写字母组成、长度≤10 if valid_word_pattern.match(word) and len(word) <= 10: output_file.write(f"{word}\n")
代码说明
- 按行读取处理,彻底避免词汇拼接问题
- 使用正则精准匹配符合要求的词汇,排除含大写、数字、特殊字符的内容
with语句自动处理文件打开/关闭,更安全规范- 若荷兰语词汇包含变音符号,只需调整正则表达式即可兼容
内容的提问来源于stack exchange,提问作者HansK
相关产品推荐
相关产品推荐

