练习题:字符串操作

考点:

  • 字符串切片
  • 字符串方法(如:split, join, replace
  • 正则表达式(re模块)

题目描述: 编写一个Python函数 process_text,该函数接受一个字符串作为输入,并执行以下操作:

  1. 使用正则表达式将字符串中的所有数字替换为相应数量的星号(*)。
  2. 将处理后的字符串分割成单词列表。
  3. 将单词列表中的每个单词首字母大写,其余字母小写。
  4. 使用逗号和空格(, )将单词列表连接成一个字符串,并返回。

例如,输入字符串 "Hello 123 world 456" 应返回 "Hello***, World***"

作答区:

# 请在此处编写你的代码

答案

import re

def process_text(text):
    # 替换数字为星号
    text_with_stars = re.sub(r'\d+', lambda m: '*' * len(m.group()), text)
    # 分割字符串为单词列表
    words = text_with_stars.split()
    # 首字母大写,其余小写
    capitalized_words = [word.capitalize() for word in words]
    # 连接单词列表为一个字符串
    result = ', '.join(capitalized_words)
    return result

# 测试代码
test_string = "Hello 123 world 456"
print(process_text(test_string))  # 输出应为 "Hello***, World***"

更高级的实现

扩展考点:

  • 正则表达式的分组和回调函数
  • 字符串的格式化

高级实现描述: 利用正则表达式的 sub 函数的回调功能,直接在替换数字的同时对单词进行首字母大写和其余字母小写的处理。

作答区:

# 请在此处编写你的代码

答案:

import re

def process_text_advanced(text):
    # 正则表达式匹配单词,并使用回调函数进行格式化
    def format_word(match):
        word = match.group()
        return word[0].upper() + word[1:].lower()
    
    # 替换数字为相应数量的星号,并格式化单词
    formatted_text = re.sub(r'\b\w+\b', format_word, text)
    # 替换数字为星号
    formatted_text = re.sub(r'\d+', lambda m: '*' * len(m.group()), formatted_text)
    return formatted_text

# 测试代码
test_string = "Hello 123 world 456"
print(process_text_advanced(test_string))  # 输出应为 "Hello***, World***"

www.zymlrcw.com
www.zylzrcw.com
www.zygtrcw.com

 在这个实现中,我们使用了 \b\w+\b 正则表达式来匹配单词,并使用 format_word 回调函数来格式化每个匹配的单词。之后,我们再次使用 sub 函数来替换数字。这种方法更为高效,因为它只需要遍历字符串两次,而不是先分割再单独处理每个单词。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值