正则表达式与PHP搜索选项:如何提取仅出现一次的三字母字符串?
提取文本中仅出现一次的三字母字符串的简便方法
当然有简便方法啦!用Python的话可以借助标准库快速实现,分两种常见场景给你说明:
场景1:提取作为独立单词的三字母字符串
如果你的需求是找出文本中单独成词、长度恰好为3且仅出现一次的字符串(比如你示例里的abc),可以这样做:
from collections import Counter # 输入你的目标文本 input_text = "aa jg hgh a hdgh a gd abc jd cc jdv dvn ab vd bacc" # 1. 把文本按空格拆分成单个单词 words = input_text.split() # 2. 筛选出长度正好是3的单词 three_letter_words = [word for word in words if len(word) == 3] # 3. 统计每个三字母单词的出现次数 word_counts = Counter(three_letter_words) # 4. 提取仅出现一次的三字母单词,得到目标数组 result = [word for word, count in word_counts.items() if count == 1] print(result) # 输出结果: ['hgh', 'abc', 'jdv', 'dvn']
代码说明:
split():快速把文本按空格分割成独立单词列表,避免跨单词的干扰- 列表推导式:简洁地筛选出符合长度要求的单词
Counter:Python标准库自带的计数工具,比手动写循环计数高效且易读- 最后一次列表推导式:精准筛选出出现次数为1的目标字符串
场景2:提取所有连续的三字母子串(含非单词场景)
如果你的需求是找出文本中**所有连续的三个字符(不管是否是独立单词)**且仅出现一次的字符串,可以调整代码如下:
from collections import Counter input_text = "aa jg hgh a hdgh a gd abc jd cc jdv dvn ab vd bacc" # 1. 先移除文本中的空格,避免空格干扰连续子串提取 clean_text = input_text.replace(" ", "") # 2. 生成所有连续的三字母子串 three_letter_substrings = [clean_text[i:i+3] for i in range(len(clean_text)-2)] # 3. 统计每个子串的出现次数 substring_counts = Counter(three_letter_substrings) # 4. 筛选仅出现一次的子串 result = [sub for sub, count in substring_counts.items() if count == 1] print(result)
你可以根据自己的实际需求选择对应的代码~
内容的提问来源于stack exchange,提问作者Asif Iqbal
相关产品推荐
相关产品推荐

