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也不是回事啊