我需要能够在Python字符串中找到星号,然后在该字符串中的后续字符上运行upper
方法。所以假设我有:
s*tring
我需要把它变成:
sTring
答案 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