看板 Python 關於我們 聯絡資訊
各位先進 小弟剛初學不久 想跟大家請教一下 如果想將下面這個String 0x798ffd60, 0xf10e, 0x4ac4, 0x89, 0x39, 0xc8, 0xbe, 0xab, 0xfe, 0x55, 0xb4 轉換成格式成下面格式 798ffd60-f10e-4ac4-8939-c8beabfe55b4 有什麼比較漂亮的寫法嗎? 有一個重點就是,格式必須要符合寬度 例如 第一組資料如果是0xffd60,則我們必須把資料補滿為 000ffd60-xxxx-xxxx-xxxx-xxxxxxxx 其他欄位以此類推 下面是我的Sample code(有點硬來...讓大家傷眼了Orz) def FillZeroByWidth(Str, Width): Str = Str[2:].zfill(Width) return Str def FillZeroGuid(Str): tmpList = Str.split(", ") tmpStr = "" tmpStr += fillzerobywidth(tmpList[0], 8) tmpStr += fillzerobywidth(tmpList[1], 4) tmpStr += fillzerobywidth(tmpList[2], 4) tmpStr += fillzerobywidth(tmpList[3], 2) tmpStr += fillzerobywidth(tmpList[4], 2) tmpStr += fillzerobywidth(tmpList[5], 2) tmpStr += fillzerobywidth(tmpList[6], 2) tmpStr += fillzerobywidth(tmpList[7], 2) tmpStr += fillzerobywidth(tmpList[8], 2) tmpStr += fillzerobywidth(tmpList[9], 2) tmpStr += fillzerobywidth(tmpList[10], 2) return tmpStr def strInsertIndex(Str, Index, Char): return Str[:Index] + Char + Str[Index:] def modifyGuidFormat(Str): tmpStr = FillZeroGuid(Str) tmpStr = strInsertIndex(tmpStr, 8, "-") tmpStr = strInsertIndex(tmpStr, 13, "-") tmpStr = strInsertIndex(tmpStr, 18, "-") tmpStr = strInsertIndex(tmpStr, 23, "-") return tmpStr def main(): tmpGuid = modifyGuidFormat(Guid) 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.137.54.228 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1500566065.A.B5B.html ※ 編輯: LwHow (114.137.54.228), 07/21/2017 00:04:33 ※ 編輯: LwHow (114.137.54.228), 07/21/2017 00:05:54
alemonmk: 研究一下 py 內建 uuid module 怎麼用吧 07/21 00:20
LwHow: 感謝A大的支援!我立刻來研究一下! 07/21 00:29
darkgerm: 撇開uuid的話 這個用format string就能做到了 07/21 09:19
darkgerm: 可以看 str.format 07/21 09:20