Python中字符串内单词长度匹配计数问题求助
解决方法
1. 拆分原始输入为两个目标字符串
先把整行输入按逗号分割,得到两个各自包含下划线分隔单词的独立字符串。比如输入是apple_banana,cat_dog_elephant,分割后得到apple_banana和cat_dog_elephant。
以Python为例,代码实现:
input_line = "apple_banana,cat_dog_elephant" str1, str2 = input_line.split(',')
2. 将每个字符串拆分为单个单词列表
把两个字符串分别按下划线分割,得到单个单词的列表,这样就能单独处理每个单词的长度了。比如:
words1 = str1.split('_') # 得到 ['apple', 'banana'] words2 = str2.split('_') # 得到 ['cat', 'dog', 'elephant']
3. 提取第二个字符串的单词长度集合
把第二个单词列表里每个单词的长度提取出来,存成一个集合(集合的优势是成员查询速度快,避免重复长度的无效判断)。比如上面的例子,长度集合是{3, 8}。
代码实现:
target_lengths = {len(word) for word in words2}
4. 统计第一个字符串中符合条件的单词数
遍历第一个单词列表,逐个检查单词长度是否在目标长度集合里,统计符合条件的数量:
count = 0 for word in words1: if len(word) in target_lengths: count += 1 # 或者用更简洁的写法 count = sum(1 for word in words1 if len(word) in target_lengths)
举个完整的例子:
输入:hello_world,foo_bar_baz
处理后:
- str1拆分后是
['hello', 'world'],长度分别是5、5 - str2拆分后是
['foo', 'bar', 'baz'],长度集合是{3} - 统计结果是0,因为5不在{3}里
再比如输入:aa_b_c,aa_bbb
- str1的单词长度是2、1、1
- str2的长度集合是{2,3}
- 统计结果是1(第一个单词长度2在集合里)
内容的提问来源于stack exchange,提问作者user16661978
相关产品推荐
相关产品推荐

