本次实验解题逻辑清晰,内容丰富,格式整洁。
1.理解转义字符、ASCII、UTF-8的基本概念与应用;
2.掌握字符串常用方法;
3.掌握正则表达式基本语法;
4.理解正则表达式扩展语法;
5.掌握正则表达式模块re的常用函数;
通过编写函数实现下述各题。
1.输入一字符串,各个子串之间按空白字符隔开,分别显式其中最长、最短子串,以及最大、最小字符。
2.输入单个字符,判断并显示该字符是否为大写英文字母、小写英文字母、非英文文字字符、空格、数字或者其它字符。
3.输入一字符串,各个子串之间按空白字符隔开,要求将其中的纯英文子串的大写字母改为小写,含数字的子串中的阿拉伯数字改写为对应的汉字,并且将所有空白字符改写为'%'。
4.字符串加密与解密,输入一字符串,按如下规则加密,将原文中每个字符转换为对应的ascii码后,再将该ascii码加上一100100至200200之间的整数得到的数值即为该字符对应的密文;解密即为上述过程的逆运算。将该字符串加密后再解密,并且显示原文、密文、解密后文本。
5.输入一字符串,要求统计出该字符串中出现频率最高的字符。
令字符串 s='马丽于2022-4-29 10:10刊发了一首诗《Listen to me》,诗词的大意是:\n Mama you taught me to do the right things,\n So now you have to let your baby fly.\n You've given me everything that I will need,\n To make it through this crazy thing called life,\n Thank you Mum!' ,通过编写函数实现下述各题功能。
1 .应用正则表达式判断该字符串是否包含0~9的数字和大小写英文字母。
2.根据正则表达式使用中文逗号、中文句号、英文逗号、英文点号、英文感叹号、英文换行符号将该字符串分割成多个子串。
3.应用正则表达式提取该字符串中的日期时间字符串。
4.应用正则表达式提取该字符串中的诗词名称。
5.应用正则表达式提取该字符串中的姓名。
1.输入一字符串,各个子串之间按空白字符隔开,分别显式其中最长、最短子串,以及最大、最小字符。
#程序名:1.py
#功能:输入一字符串,各个子串之间按空白字符隔开,分别显式其中最长、最短子串,以及最大、最小字符。
#作者:赵民昌
#学号:20222501290
#日期:2023/3/30
#思路:用split函数分割,找到最长与最短字符,构建字符串集合,用max与min找到最大最小字符
s = input("请输入字符串:")
substrings = s.split() # 按空白字符分割字符串为子串列表
longest_substring = max(substrings, key=len) # 找到最长子串
shortest_substring = min(substrings, key=len) # 找到最短子串
all_chars = set(s) # 构建所有字符的集合
max_char = max(all_chars) # 找到最大字符
min_char = min(all_chars) # 找到最小字符
print("最长子串:", longest_substring)
print("最短子串:", shortest_substring)
print("最大字符:", max_char)
print("最小字符:", min_char)
copy
2.输入单个字符,判断并显示该字符是否为大写英文字母、小写英文字母、非英文文字字符、空格、数字或者其它字符。
#程序名:2.py
#功能:输入单个字符,判断并显示该字符是否为大写英文字母、小写英文字母、非英文文字字符、空格、数字或者其它字符。
#作者:赵民昌
#学号:20222501290
#日期:2023/3/31
#思路:输入字符,用isalpha/isupper/isspace/isdigit判断大写小写空格
c = input("请输入字符:")
if c.isalpha():
if c.isupper():
print(c, "是大写英文字母")
else:
print(c, "是小写英文字母")
elif c.isspace():
print(c, "是空格")
elif c.isdigit():
print(c, "是数字")
else:
print(c, "是非英文字符或其它字符")
copy
3.输入一字符串,各个子串之间按空白字符隔开,要求将其中的纯英文子串的大写字母改为小写,含数字的子串中的阿拉伯数字改写为对应的汉字,并且将所有空白字符改写为'%'。
#程序名:3.py
#功能:输入一字符串,各个子串之间按空白字符隔开,要求将其中的纯英文子串的大写字母改为小写,含数字的子串中的阿拉伯数字改写为对应的汉字,并且将所有空白字符改写为'%'。
#作者:赵民昌
#学号:20222501290
#日期:2023/3/31
import re
# 定义数字对应汉字的字典
num_dict = {
"0": "零",
"1": "一",
"2": "二",
"3": "三",
"4": "四",
"5": "五",
"6": "六",
"7": "七",
"8": "八",
"9": "九"
}
# 输入字符串,并将空白字符替换为'%'
str_input = input("请输入一串字符串:").replace(" ", "%")
# 利用正则表达式分割子串
sub_str_list = re.split(r"(\W+)", str_input)
# 对于分割后的每个子串进行相应的处理
for i in range(len(sub_str_list)):
sub_str = sub_str_list[i]
# 判断是否为纯英文子串,是则进行大写转小写
if sub_str.isalpha():
sub_str_list[i] = sub_str.lower()
# 判断是否为含数字的子串,是则进行阿拉伯数字转汉字
elif any(c.isdigit() for c in sub_str):
for digit, word in num_dict.items():
sub_str_list[i] = sub_str_list[i].replace(digit, word)
# 将所有子串重新拼接为一个字符串
result_str = ''.join(sub_str_list)
# 输出处理后的结果
print(result_str)
copy
4.字符串加密与解密,输入一字符串,按如下规则加密,将原文中每个字符转换为对应的ascii码后,再将该ascii码加上一100100至200200之间的整数得到的数值即为该字符对应的密文;解密即为上述过程的逆运算。将该字符串加密后再解密,并且显示原文、密文、解密后文本。
#程序名:4.py
#功能:字符串加密与解密,输入一字符串,按如下规则加密,将原文中每个字符转换为对应的ascii码后,再将该ascii码加上一100100至200200之间的整数得到的数值即为该字符对应的密文;解密即为上述过程的逆运算。将该字符串加密后再解密,并且显示原文、密文、解密后文本。
#作者:赵民昌
#学号:20222501290
#日期:2023/3/31
import random
# 加密函数
def encrypt(text):
# 生成一个随机整数
shift = random.randint(100100, 200200)
encrypted_text = ''
for c in text:
# 将字符转换为ascii码并加上shift后得到新的ascii码
encrypted_ascii = ord(c) + shift
# 将新的ascii码转换为字符拼接到加密文本中
encrypted_text += chr(encrypted_ascii)
return encrypted_text, shift
# 解密函数
def decrypt(encrypted_text, shift):
decrypted_text = ''
for c in encrypted_text:
# 将ascii码减去shift即可得到原始的ascii码
decrypted_ascii = ord(c) - shift
# 将得到的ascii码转换为字符拼接到解密文本中
decrypted_text += chr(decrypted_ascii)
return decrypted_text
# 输入待加密的字符串
text = input("请输入要加密的字符串:")
# 加密字符串并输出结果
encrypted_text, shift = encrypt(text)
print("加密后的字符串为:", encrypted_text)
# 解密加密后的字符串并输出解密后的结果
decrypted_text = decrypt(encrypted_text, shift)
print("解密后的字符串为:", decrypted_text)
copy
5.输入一字符串,要求统计出该字符串中出现频率最高的字符。
令字符串 s='马丽于2022-4-29 10:10刊发了一首诗《Listen to me》,诗词的大意是:\n Mama you taught me to do the right things,\n So now you have to let your baby fly.\n You've given me everything that I will need,\n To make it through this crazy thing called life,\n Thank you Mum!' ,通过编写函数实现下述各题功能。
1 .应用正则表达式判断该字符串是否包含0~9的数字和大小写英文字母。
2.根据正则表达式使用中文逗号、中文句号、英文逗号、英文点号、英文感叹号、英文换行符号将该字符串分割成多个子串。
3.应用正则表达式提取该字符串中的日期时间字符串。
4.应用正则表达式提取该字符串中的诗词名称。
5.应用正则表达式提取该字符串中的姓名。
#程序名:5.py
#功能:输入一字符串,要求统计出该字符串中出现频率最高的字符。
#作者:赵民昌
#学号:20222501290
#日期:2023/3/31
import re
s = '马丽于2022-4-29 10:10刊发了一首诗《Listen to me》,诗词的大意是:\n Mama you taught me to do the right things,\n So now you have to let your baby fly.\n You\'ve given me everything that I will need,\n To make it through this crazy thing called life,\n Thank you Mum!'
# 1. 判断字符串是否包含数字和字母
if re.search(r'[0-9a-zA-Z]', s):
print("该字符串包含数字和字母")
else:
print("该字符串不包含数字和字母")
# 2. 分割字符串成多个子串
substrings = re.split(r'[,。,.\n!]', s)
print("分割后的子串为:", substrings)
# 3. 提取字符串中的日期时间字符串
date_time_string = re.findall(r'\d{4}-\d{1,2}-\d{1,2} \d{1,2}:\d{1,2}', s)
print("日期时间字符串为:", date_time_string)
# 4. 提取字符串中的诗词名称
poem_name = re.findall(r'《(.+?)》', s)
print("诗词名称为:", poem_name)
# 5. 提取字符串中的姓名
names = re.findall(r'[^\u4e00-\u9fa5]+([\u4e00-\u9fa5]+)[^\u4e00-\u9fa5]+', s)
print("姓名为:", names)
copy
1.
问题解决:
正则表达式用于匹配日期时间字符串,其中\d表示数字字符,{4}表示匹配4位数字,[-/]表示匹配连字符或斜杠,{1,2}表示至少匹配1位数字,最多匹配2位数字。后面的空格和冒号用于匹配日期时间之间的空格和冒号。
正则表达式
正则表达式是一种强大的文本处理工具,它可以用来匹配、查找和替换字符串。通过使用一定的语法规则和通配符,正则表达式能够提供高效、灵活的文本处理功能。
在程序设计中,正则表达式被广泛应用于字符串处理、数据验证、搜索引擎等方面。学习正则表达式需要掌握一定的语法知识和常用的表达式模式,例如字符集合、限定符、元字符等。同时,熟练掌握正则表达式还需要多做练习和实践,通过不断调试和优化表达式,提高其效率和准确性。
学习时间 0分钟
操作时间 0分钟
按键次数 0次
实验次数 1次
报告字数 6460字
是否完成 未完成