MST

星途 面试题库

面试题:Python字符串操作之正则替代方案 - 动态替换逻辑

假设有一个字符串列表 ['apple 123', 'banana 456', 'cherry 789'],对于每个字符串,要根据其前面的单词来决定替换策略:如果单词是 'apple',则将数字替换为 'APPLE_CODE';如果是 'banana',替换为 'BANANA_CODE';如果是 'cherry',替换为 'CHERRY_CODE'。请使用Python的正则替代方案结合合适的逻辑实现此功能,给出完整代码并解释关键步骤。
17.8万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
import re


def replace_numbers(str_list):
    result = []
    for s in str_list:
        if re.match(r'^apple\s', s):
            new_s = re.sub(r'\d+', 'APPLE_CODE', s)
        elif re.match(r'^banana\s', s):
            new_s = re.sub(r'\d+', 'BANANA_CODE', s)
        elif re.match(r'^cherry\s', s):
            new_s = re.sub(r'\d+', 'CHERRY_CODE', s)
        else:
            new_s = s
        result.append(new_s)
    return result


str_list = ['apple 123', 'banana 456', 'cherry 789']
print(replace_numbers(str_list))

关键步骤解释:

  1. 导入re模块:Python的re模块用于处理正则表达式,这里用于匹配和替换字符串。
  2. 定义替换函数replace_numbers:该函数接受一个字符串列表作为参数,并返回处理后的字符串列表。
  3. 遍历字符串列表:使用for循环遍历输入的字符串列表str_list,对每个字符串进行处理。
  4. 匹配前缀:使用re.match函数匹配字符串的前缀,判断是'apple'、'banana'还是'cherry'。^表示字符串的开始位置,\s表示空白字符(空格、制表符等)。
  5. 替换数字:如果匹配到相应前缀,使用re.sub函数将字符串中的数字替换为对应的代码。re.sub的第一个参数是要匹配的正则表达式\d+,表示一个或多个数字;第二个参数是替换后的字符串;第三个参数是要处理的原字符串。
  6. 添加到结果列表:将处理后的字符串添加到结果列表result中。
  7. 返回结果:最后返回包含处理后字符串的结果列表。
  8. 调用函数并输出:定义字符串列表str_list,调用replace_numbers函数并输出结果。