【问题标题】:Adding asterisk before and after a particular word in a sentence in python在python中的句子中的特定单词之前和之后添加星号
【发布时间】:2021-07-22 07:45:20
【问题描述】:

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

【问题讨论】:

  • "He enjoys playing cricket in summer".replace('cricket', '**cricket**') ?
  • 你尝试了什么?
  • 我尝试将整个句子分成单词,并在单词前后附加星号,但它认为这些星号是单独的单词并在加入时添加空格。

标签: python python-3.x string string-interpolation


【解决方案1】:

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

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() 更改了添加星号的方式。似乎比我的版本好。

【讨论】:

  • 您好,感谢您的解决方案。这可以按我的需要工作,但只是一个问题。 if 内部的 print 语句在目标单词周围带有星号。但是当我在循环外打印全句时,它仍然是正常的句子。我猜修改没有存储在变量'fullsentence'中。
  • 因为我故意将变量 fullsentence 保留原样。至于你想要什么(将变量 fullsentence 更新为带有 ** 的变量)请参阅编辑我的代码
【解决方案2】:

正如评论所说,您可以使用 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'**\1**', 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'))

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

【讨论】:

  • 那么,第一个函数star_re() 会在目标词上加上星号,对吧?然后在下一个方法中它只会替换目标词。在我的任务中,我不会有 **cricket** 目标词。这将只是“板球”。所以我将无法直接执行替换功能。
  • 它们应该具有相同的输出并且功能应该以相同的方式工作。我相信我运行了该程序,这就是我所看到的,并且在我的示例中没有发现任何问题,但是如果您运行它并得到不同的结果,请告诉我。函数不会直接替换,因此变量 's' 永远不会改变。
【解决方案3】:

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**'))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-30
    相关资源
    最近更新 更多