在 python 中的句子中的特定单词前后添加星号

Adding asterisk before and after a particular word in a sentence in python

我想在句子中的特定单词前后添加两个星号“**”。例如,如果句子是“他喜欢在夏天玩板球”,目标词是 'cricket'。最终的输出字符串应该是“他喜欢在夏天玩**板球**”。 我无法明确地做到这一点。请建议我在 python.

中进行此字符串修改的方法

如评论所述,您可以使用 str.replace()。

s = "He enjoys playing cricket in summer"
print(s.replace('cricket', '**cricket**'))

如果你想要更通用的东西。

import re

def star_re(orig_string, star_string):
   new_string, count = re.subn(f'({star_string})', r'****', orig_string)
   return new_string

def star_replace(orig_string, star_string):
   return orig_string.replace(star_string, f'**{star_string}**')

s = "He enjoys playing cricket in summer"

print(star_re(s, 'cricket'))
print(star_replace(s, 'cricket'))

正则表达式版本的唯一优点是您可以使其更适合仅匹配单词边界或其他内容。

这是根据用户输入的各种句子:

targetword = input('target word')
fullsentence = input('full sentence')
if targetword in fullsentence:
    fullsentence = fullsentence.replace(targetword, f'**{targetword}**')
    print(fullsentence)
    # print(f'{fullsentence[0:fullsentence.index(targetword)]}**{targetword}**{fullsentence[fullsentence.index(targetword) + len(targetword) : len(fullsentence)]}')
else:
    print('target word does not exist')

注意:我更改了 if 条件。我完全忘记了你可以在句子本身的开头或结尾使用那个确切的词。

*我按照其他评论者的建议,通过 .replace() 更改了添加星号的方式。看起来比我的版本好看。

python 中的每个 string 都有一个内置的 replace 方法,您可以使用该方法将特定短语替换为另一个短语

一般形式为:

string.replace(oldvalue, newvalue, count)

参数值:

Parameter Description Required?
oldvalue The string to search for Yes
newvalue The string to replace the old value with Yes
count A number specifying how many occurrences of the old value you want to replace. Default is all occurrences No

代码:

print("He enjoys playing cricket in summer".replace('cricket','**cricket**'))

my_string = "He enjoys playing cricket in summer"
print(my_string.replace('cricket','**cricket**'))