在Python字符串中搜索字符,然后修改后续字符

时间:2016-07-06 08:02:47

标签: python string replace split

我需要能够在Python字符串中找到星号,然后在该字符串中的后续字符上运行upper方法。所以假设我有:

s*tring

我需要把它变成:

sTring

2 个答案:

答案 0 :(得分:1)

虽然可以迭代字符串和替换字符,但使用模式匹配更有效。您可以通过re模块的sub()方法执行此操作。首先定义一个lambda函数来执行转换过程,然后使用此函数使用re.sub()进行匹配和替换。希望这有帮助!

import re
txt = "s*tring"
callback = lambda pat: pat.group(0).replace("*", "").upper()
txt = re.sub("\*[a-z]", callback, txt)
print txt

结果:

>> python main.py
sTring

请记住,这也可用于句子..设置txt = "My *name is *c.*swadhikar"

结果:

>> python main.py
My Name is C.Swadhikar

答案 1 :(得分:1)

你可以这样做一个蛮力的方式:

$('#submit-comment').on('click',function(){
    event.preventDefault();
    event.stopImmediatePropagation();
    $(this).unbind('click'); 
    alert('');
    var user_id = '<?=Yii::$app->user->identity->id?>';
    var content = $('#comment-content').val();
    var post_id = '<?=$model->id?>';
    var associative_id = $(this).data('assoc-id');
    $.post('/frontend/post/submit-comment', {
        user_id : user_id,
        post_id : post_id,
        content : content,
        associative_id: associative_id
    }, function(response){
        if(response['response'] == true){

            $('#comment-content').removeClass('error-form');
            $('#comment-content').addClass('success-form');
            $(this).data('assoc-id','null');
            $('#comment-content').val('');
            $.pjax.reload({container:"#pjax-post-comments",url: '/frontend/post/detail?id=<?=$model->id?>',replace:false,timeout: 5000});
            init();
        }
        else{
            alert(response['errors']);
            $('#comment-content').addClass('error-form');
            $('#comment-content').removeClass('succes-form');
        }
    });
});

输出:

def str_upper(string):

    my_list = list(string)

    indexes = []
    for char in my_list:

        if char is "*":
            indexes.append(my_list.index(char))
            my_list.remove(char)

    result = []
    for i, letter in enumerate(my_list):

       if i in indexes:
          result.append(letter.upper())

       else:
           result.append(letter)

    return "".join(result)

这也是一个更短的pythonic解决方案:

>>> str_upper("s*tring")
sTring

>>> str_upper("s*tri*ng")
sTriNg