有没有办法将字符串" 12345678aaaa12345678bbbbbbbb" 转换为" 12345678-aaaa-1234-5678-bbbbbbbb" 在python?
我不知道怎么做,因为我需要插入" - "在可变长度的元素之后说第8个元素之后然后是第4个元素,依此类推。
答案 0 :(得分:4)
此函数在字符串的位置插入char:
def insert(char,position,string):
return string[:position] + char + string[position:]
答案 1 :(得分:1)
Python字符串不能变异。我们可以做的是根据您的意愿创建另一个插入连字符的字符串。
考虑字符串s =" 12345678aaaa12345678bbbbbbbb"
给予s[:8] + '-' + s[8:] will give you 12345678-aaaa12345678bbbbbbbb
您可以通过调整:
值来根据需要提供连字符。
有关添加连字符的更多方法,请参阅此问题主题以获取有关如何插入连字符的答案。 Add string in a certain position in Python
答案 2 :(得分:0)
最简单的解决方案:
str = '12345678aaaa12345678bbbbbbbb'
indexes = [8, 4, 4, 4]
i = -1
for index in indexes:
i = i + index + 1
str = str[:i] + '-' + str[i:]
print str
打印:12345678-aaaa-1234-5678-bbbbbbbb
您可以随意更改indexes
数组,以达到您想要的效果。
答案 3 :(得分:0)
您可以按照以下流程操作:
def insert_(str, idx):
strlist = list(str)
strlist.insert(idx, '-')
return ''.join(strlist)
str = '12345678aaaa12345678bbbbbbbb'
indexes = [8, 4, 4, 4]
resStr = ""
idx = 0
for val in indexes:
idx += val
resStr = insert_(str,idx)
str = resStr
idx += 1
print(str)
输出:
12345678-aaaa-1234-5678-bbbbbbbb
答案 4 :(得分:0)
这并不能完全创建你想要的字符串,但无论如何都要发布它。
它找到数字变为alpha的所有索引,反之亦然。 然后插入" - "在这些指数上。
a = "12345678aaaa12345678bbbbbbbb"
lst = list(a)
index = []
for ind,i in enumerate(list(a)[:-1]):
if (i.isdigit() and lst[ind+1].isalpha()) or (i.isalpha() and lst[ind+1].isdigit()):
index.append(ind)
for i in index[::-1]:
lst.insert(i+1,"-")
''.join(lst)
' 12345678-AAAA-12345678-BBBBBBBB'
答案 5 :(得分:0)
如果您想一次性完成此操作,您可以这样做。 str =" 12345678aaaa12345678bbbbbbbb"
def insert(char,positions,string):
result = ""
for post in range(0, len(positions)):
print(positions[post])
if post == 0:
result += string[:positions[post]] + char
elif post == (len(positions) -1 ):
result += string[positions[post-1]:positions[post]] + char + string[positions[post]:]
else:
result += string[positions[post-1]:positions[post]] + char
print(result)
return result
insert("-", [8, 12, 16, 20], str)