如何用枚举字母替换(或附加)字符串中的某些术语?

时间:2017-11-06 02:14:15

标签: python-3.x replace enumerate

我想在字符串中替换(或追加)一个术语的实例,它们出现在字符串中,字母按字母顺序排列。

我有代码:

message = "This <*> is <*> a <*> message" 

我希望它打印如下:

This <*.A> is <*.B> a <*.C> message

我已经能够为消息中的每个术语添加一个数字,但这是它的范围。有人可以告诉我我需要做什么来获得输出吗?

1 个答案:

答案 0 :(得分:0)

你可以使用

传统方式:

def replace(message):
    message_list = message.split()
    indexes = [index for index, element in enumerate(message_list) if element == '<*>']
    alphabets = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'[:len(indexes)]
    for index, alphabet in zip(indexes, alphabets):
        message_list[index] = '<*.' + alphabet + '>'
    return ' '.join(message_list)

或使用正则表达式

import re

def replace(message):
     range = len(re.findall('\<\*\>', message))
     for alphabet in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'[:range]:
          replace_with = '<*.' + alphabet + '>'
          message = re.sub('\<\*\>', replace_with, message, 1)
     return message