作者LwHow (Do)
看板Python
标题[问题] GUID 字串格式转换
时间Thu Jul 20 23:54:21 2017
各位先进
小弟刚初学不久
想跟大家请教一下
如果想将下面这个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://webptt.com/cn.aspx?n=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
1F:推 alemonmk: 研究一下 py 内建 uuid module 怎麽用吧 07/21 00:20
3F:→ LwHow: 感谢A大的支援!我立刻来研究一下! 07/21 00:29
4F:推 darkgerm: 撇开uuid的话 这个用format string就能做到了 07/21 09:19
5F:→ darkgerm: 可以看 str.format 07/21 09:20