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 + '\n') 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也不是回事啊
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
2017-08-31 impdp导入文件失败问题解决(ORA-39001/ORA-39000/ORA-39143)