首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python,联接()函数,在单词之间添加空格

Python,联接()函数,在单词之间添加空格
EN

Stack Overflow用户
提问于 2015-08-25 09:25:32
回答 7查看 11.9K关注 0票数 5

我需要编写一个函数,它接受两个字符串(文本和单词),并返回所选单词替换为星号的文本(星号的数量应该对应于被审查的单词中的字母数)。

例如:

如果text=“嘿嘿”和word=“嘿嘿”,返回的文本应该是:

代码语言:javascript
运行
复制
'*** *** ***'

这是我的代码:

代码语言:javascript
运行
复制
def censor(text,word):
    text = text.split(" ")
    asterisks=[]
    text_with_asterisks=[]

    for item in text:
        if item not in word:
            text_with_asterisks.append(item)
        else:
            asterisks=[]
            for letter in word:
                asterisks.append("*")

            text_with_asterisks.append(' '.join(asterisks))
    return (" ".join(text_with_asterisks))

代码工作正常,但它返回:

代码语言:javascript
运行
复制
 ********* 

而不是

代码语言:javascript
运行
复制
*** *** ***. 

一旦我用了这句话:

代码语言:javascript
运行
复制
return ("_".join(text_with_asterisks))

相反,我得到了:

代码语言:javascript
运行
复制
'***_***_***'

我不明白为什么“”会被忽略,以及如何在单词之间添加一个空格。

谢谢!

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2015-08-25 09:32:20

当你加入星号时,你有一个额外的空间:

代码语言:javascript
运行
复制
def censor(text, word):
    text = text.split(" ")
    asterisks=[]
    text_with_asterisks=[]

    for item in text:
        if item not in word:
            text_with_asterisks.append(item)
        else:
            asterisks=[]
            for letter in word:
                asterisks.append("*")

            text_with_asterisks.append(''.join(asterisks)) #here's the culprit
    return (" ".join(text_with_asterisks))

censor("hey hey hey", "hey")输出您想要的东西('*** *** ***')

我只是指出了你的错误,但肯定有一个更优雅和更有效的方式来做你想做的事。

票数 3
EN

Stack Overflow用户

发布于 2015-08-25 09:32:19

以下是最简单的解决方案

代码语言:javascript
运行
复制
text.replace(word, "*" * len(word))
票数 3
EN

Stack Overflow用户

发布于 2015-08-25 09:39:59

做这件事的方法-

代码语言:javascript
运行
复制
import re
def censor(text,word):
    return re.sub(r'\b(?i){0}\b'.format(re.escape(word)),'*' * len(word), text)

示例/演示-

代码语言:javascript
运行
复制
>>> censor('hey hey they hey','hey')
'*** *** they ***'

>>> censor('hey hey they Hey','hey')
'*** *** they ***'
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32200262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档