插入" - "在字符串后面的可变长度的元素

时间:2017-08-09 06:11:30

标签: python

有没有办法将字符串" 12345678aaaa12345678bbbbbbbb" 转换为" 12345678-aaaa-1234-5678-bbbbbbbb" 在python?

我不知道怎么做,因为我需要插入" - "在可变长度的元素之后说第8个元素之后然后是第4个元素,依此类推。

6 个答案:

答案 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)