如何将连字符插入 UUID 字符串? [重复]

问题描述 投票:0回答:4

我想创建一个函数,在 UUID 字符串的位置 8、12、16、20 上添加一个

-

例子:

Original: 76684739331d422cb93e5057c112b637
New: 76684739-331d-422c-b93e-5057c112b637

我不知道如何将它定位在一个看起来不像意大利面条代码的字符串中的多个位置。

python uuid
4个回答
9
投票

看起来你正在使用 UUID。有一个 library,它是 Python 的标准配置:

import uuid
s = '76684739331d422cb93e5057c112b637'
u = uuid.UUID(hex=s)
print(u)
76684739-331d-422c-b93e-5057c112b637

2
投票

Regex 是另一种方式,\S 匹配任何非空白字符,{} 中的数字是字符数。

import re
​
new=re.sub(r'(\S{8})(\S{4})(\S{4})(\S{4})(.*)',r'\1-\2-\3-\4-\5',original)

print(new)

# 76684739-331d-422c-b93e-5057c112b637

1
投票

您可以通过切片逐步附加到新字符串来做到这一点:

original = "76684739331d422cb93e5057c112b637"
indices = [8, 12, 16, 20]
delimiter = "-"

new_string = ""
prev = 0
for index in indices:
    new_string += original[prev:index] + delimiter
    prev = index
new_string += original[prev:]

print(new_string)
# 76684739-331d-422c-b93e-5057c112b637

1
投票

鉴于以下论点:

delimiter = '-'
indexes = [8,12,16,20]
string = '76684739331d422cb93e5057c112b637'

您可以将

list comprehension
join
一起使用:

idx = [0] + indexes + [len(string)]
delimiter.join([string[idx[i]:idx[i+1]] for i in range(len(idx)-1)])

输出:

'76684739-331d-422c-b93e-5057c112b637'
© www.soinside.com 2019 - 2024. All rights reserved.