Python中按指定长度分割字符串并反转
需求
文件名为tel.txt,内容格式每行都是一行不超过16位的数字,实现要求就是如果不超过16位的就以F补充到末尾凑齐16位,然后每行以2位分割并反转。比如188123456789723 反转后要求是 81183254769827F3 。就是这样子
实现逻辑
1、读取tel.txt文件内容,保存到文件列表。文件内容如下:
2、每行字符串不超过16位的,以F填充。
3、数字以2位分割,2位反转后再全部拼接。(关键步骤,写成函数,以后可以复用)
4、保存到新文件。
代码如下:
# -*- coding: utf-8 -*-
"""
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
"""
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!")