牛客网HJ4 字符串分隔Python3解法

博客内容介绍了如何使用Python处理字符串,确保其长度为8的倍数,并使用正则表达式进行高效分割。在遇到小坑时,注意了Python中整数除法的使用以及字符串填充的方法。文章提供了两种不同的解决方案,一种是通过不断切片和打印,另一种则是通过ljust()方法和正则表达式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目介绍:

 

 个人解法:

import re
while True:
    try:
        str = input()
        l = len(str)
        # 判断字符长度,如果不是8的倍数,将其补成8的倍数
        if l%8 != 0:
            l = (l//8 + 1)*8
        # 用0补齐字符串
        s = str.ljust(l, '0')
        # 用正则表达式分割字符串
        li = re.findall(r'.{8}', s)
        for i in li:
            print(i)
    except:
        break

涉及到的方法:

ljust(width,fillchar)方法:原字符串左对齐,在末尾填充字符,width为指定字符长度,小于该长度则补齐到该长度,fillchar表示填充的字符串,默认为空格。

rjust(idth,fillchar)方法:原字符串右对齐,在开头填充字符,其余同ljust。

分割字符串用正则表达式很高效,直接就将字符串按固定长度分割,然后放到列表里了。

碰到的小坑:

①一开始想补齐字符串长度为8的倍数,于是想要len(str)除以8的商,我直接用len(str)/8了,然后调试发现报错说这里是个float型数据,原来python3里要取整数商要用len(str)//8表示向下取整,python2里可以直接用len(str)/8。

②ljust()方法必须创建个新的变量,把补齐后的字符串赋值给新变量。

记录下排行靠前,效率更高的解法:

while True:
    try:
        str = input()
        # 字符串长度大于8时
        while len(str) > 8:
            # 每次切片取出前8个字符
            print(str[:8])
            # 取完后,丢掉前8个字符
            str = str[8:]
        # 剩余长度不足8的字符串,用0补齐
        print(str.ljust(8, '0'))    
    except:
        break

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值