题解 | #字符串分隔#
字符串分隔
https://www.nowcoder.com/practice/d9162298cb5a437aad722fccccaae8a7
import re def str_split(input_str): # 使用正则表达式找到所有8个字符长度的匹配项 if len(input_str) >= 8: list_of_str = re.findall(r'.{8}', input_str) # 检查最后一个字符串的长度,如果不是8的倍数,补齐0 if len(input_str) % 8 != 0: # 剩余字符的数量 remaining_chars = len(input_str) % 8 # 剩余字符的起始索引 start_index = len(input_str) - remaining_chars # 将剩余的字符添加到列表中,并确保它们是8个字符长 list_of_str.append(input_str[start_index:].ljust(8, "0")) list_of_str[-1] = list_of_str[-1].ljust(8, "0") # 使用换行符连接所有字符串 return '\n'.join(list_of_str) elif len(input_str) % 8 == 0: list_of_str = re.findall(r'.{8}', input_str) return '\n'.join(list_of_str) else: return input_str.ljust(8,"0") if __name__ == '__main__': input_str = str(input()) assert len(input_str) <= 100 res = str_split(input_str) # 打印结果,每个8个字符的字符串依次换行输出 print(res)
调了一小时,思路是这样的,str长度分为大于等于8和小于8,第一种情况下,看他能不能取余数为零,若可以,将列表结果换行输出,若余数不为零,则先将可以取到的8位字符串放入列表中(re.findal(r'.{8}',input_str)),之后再从上次取完8位字符串的起始位开始取数,并补齐0,用ljust方法