使用Python正则表达式识别并输出土耳其语复数单词
解决土耳其语复数单词匹配问题
嘿,你已经搞定了文件读取和文本预处理的核心步骤,做得很棒!接下来咱们一步步实现匹配土耳其语复数单词的功能:
第一步:修正变量名小细节
你的代码里用了list作为变量名,这会覆盖Python的内置list类型,容易引发潜在问题,建议换成更具描述性的名字,比如processed_lines。
第二步:编写适配土耳其语的正则表达式
土耳其语复数以-ler或-lar结尾,结合土耳其语的Unicode特殊字符(比如ı、ğ、ş等),我们可以用下面的正则模式精准匹配这类单词:
plural_pattern = r'\b\w+(?:ler|lar)\b'
各部分含义:
\b:匹配单词边界,确保我们抓的是完整单词,而非长单词的片段\w+:匹配一个或多个Unicode字母/数字,完美兼容土耳其语特殊字符(?:ler|lar):非捕获组,匹配-ler或-lar后缀,不会额外保存分组结果,效率更高
如果文本里单词后常跟着标点(比如逗号、句号),可以调整正则来忽略这些干扰:
plural_pattern = r'\b\w+(?:ler|lar)(?=[^\w]|$)'
(?=[^\w]|$)是正向预查,确保后缀后要么是非单词字符,要么是行尾,标点再多也不影响匹配。
第三步:完整代码实现
把正则匹配逻辑整合到你的代码里,最终版本如下:
import re # 读取并预处理文件内容 file_path = 'C:/Users/ENE/Desktop/CSE & Kodlar/nlp/utf8textfile.txt' with open(file_path, encoding='utf-8-sig', errors='ignore') as file: processed_lines = [line.strip() for line in file.readlines()] # 定义土耳其语复数匹配模式 plural_pattern = r'\b\w+(?:ler|lar)\b' # 遍历每行提取并输出复数单词 print("找到的土耳其语复数单词:") for line in processed_lines: plural_words = re.findall(plural_pattern, line) if plural_words: print(f"行内容: {line}") print(f"复数单词: {plural_words}\n")
额外实用小技巧
- 如果文本有大小写混合情况(比如
KitapLar),可以添加忽略大小写的标志:plural_words = re.findall(plural_pattern, line, flags=re.IGNORECASE) - 想把所有复数单词收集到一个列表里统一查看?可以这样做:
all_plural_words = [] for line in processed_lines: all_plural_words.extend(re.findall(plural_pattern, line)) print("所有复数单词汇总:", all_plural_words)
内容的提问来源于stack exchange,提问作者Harvey
相关产品推荐
相关产品推荐

