zoukankan      html  css  js  c++  java
  • Python中按指定长度分割字符串并反转

    对话开始

     Hanmeimei:(聊天工具弹出消息)哥,我有需求,你可以满足我吗?

     Tony:这么晚了,你是要干啥?

     Hanmeimei:就是因为晚我才着急啊

     Tony:(对这刚入职新员工早有好感的Tony心中窃喜,想套个话)你为啥只找我啊

     Hanmeimei:他们说你最厉害,能力最强。而且我们这边同事都走光了就剩下我一人

     Tony:(合作兄弟下班就是早啊)这个不敢当。。能力凑合吧,那咱就搞呗

     Hanmeimei:谢谢哥。就是我有一个文件,文件内容格式每行都是一行不超过16位的数字,实现要求就是如果不超过16位的就以F补充到末尾凑齐16位,然后每行以2位分割并反转。比如188123456789723 反转后要求是 81183254769827F3 。就是这样子。

    Tony:(妹的,原来是让我干活,果然是能力越大,下班越晚)懂了。十分钟后给你。

    需求

       文件名为tel.txt,内容格式每行都是一行不超过16位的数字,实现要求就是如果不超过16位的就以F补充到末尾凑齐16位,然后每行以2位分割并反转。比如188123456789723 反转后要求是 81183254769827F3 。就是这样子

    实现逻辑

      1、读取tel.txt文件内容,保存到文件列表。文件内容如下:

      2、每行字符串不超过16位的,以F填充。

      3、数字以2位分割,2位反转后再全部拼接。(关键步骤,写成函数,以后可以复用)

      4、保存到新文件。

    代码如下:

    # -*- coding: utf-8 -*-
    
    """
    @funtion: 反转指定字符串
    @author: lion
    @version: V1.0.0
    @create_date:2020-08-31
    @tool:python3.7
    @modify_dte:
    """
    
    import re
    
    def split_str(string,length):
        """
        按照指定长度分割输入字符串,并以列表形式返回
        :param string: 待分割字符串
        :param length: 指定分割长度
        :return: 分割后的字符串列表
        """
        str_lst = re.findall(r'.{'+str(length)+ '}',string)
        str_lst.append(string[(len(str_lst) * length):])
        return str_lst
    
    def reverse_lst(string_lst):
        """
        将列表中的字符串反转
        :param string_lst: 字符串列表
        :return: 反转后的字符串列表
        """
        reverse_str_lst = []
        for each in string_lst:
            reverse_str_lst.append(each[::-1])
        return reverse_str_lst
    
    
    if __name__ == '__main__':
        """主程序"""
        # 指定分割长度
        SPLIT_LEN = 2
        # 指定要求字符串字符串长度,长度不足要求以F末尾填充
        FIX_STRLEN = 16
        # 获取文件内容,以列表形式保存。文件内容格式为每行为188123456789723格式字符串
        fr = open('tel.txt', 'r')
        record_lst = fr.readlines()
        fr.close()
    
        reverse_record = ''
        reverse_record_lst = []
        for each_line in record_lst:
            each_line = each_line.strip()
            len_telno = len(each_line)
            if len_telno < FIX_STRLEN:
                each_line = each_line + (FIX_STRLEN - len_telno) * 'F'
            reverse_record = ''.join(reverse_lst(split_str(each_line, SPLIT_LEN)))
            reverse_record_lst.append(reverse_record + '
    ')
    
        fw = open('reverse_record.txt', 'w')
        fw.writelines(reverse_record_lst)
        fw.close()
    
        print("End Script!")

     运行结果如下:

    Tony:(不到十分钟,把转换后的文件扔了过去)给你弄好了,你检查一下

    Hanmeimei:好的,Tony哥,你这也太快了吧。。

    Tony:擦。。不要用快来夸我

    Hanmeimei:好的,哥,你真厉害。

    Tony:(擦。。居然秒懂,看着这踏实好学的新员工妹子,Tony语重心长的开始传授职场宝贵经验)你这刚进公司,要花点时间把编程学好,姿势越多,赚钱就快。姿势就是财富。。一顿猛敲职场提炼精华就发过去了

    Tony:半小时过去了,妹子没回复,一看头像已经变灰下班了。。 再猛的一看,挖槽,不是知识吗?咋成姿势了,赶紧发消息辩解一通。hanmeizi,Tony我是南方人发音不好,是知识写错了。

     Tony一看表十一点了,又是911的一天,猛撮了一口保温杯里的红枣枸杞水,收拾东西赶班车去了,内心去思考以后如何让合作在岸办公,毕竟长期见不到好感的hanmeimei也不是回事啊

  • 相关阅读:
    你最喜欢的程序员漫画
    编程名言名句
    查看一个数是不是2的n次方
    程序员需要有多懒 ?- cocos2d-x 数学函数、常用宏粗整理
    C++中string、int、char之间转换
    cocos2d-x 中使用 srand((unsigned)time(NULL))重新设置一个随机种子
    ASP.NET MVC SignalR 配合VUE
    VS Visual Studio光标无法自动到行尾,点哪里就在哪里解决办法
    .NET Core Entity Framework 代码优先配置
    Image Bitmap转MemoryStream后,上传遇到问题,报Index异常
  • 原文地址:https://www.cnblogs.com/linyfeng/p/13587641.html
Copyright © 2011-2022 走看看