如何在python中插入和替换另一个列表中的单词列表或字符串

2024-10-02 02:27:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用上面的单词[NOUN]替换一个字符串。我是个笨蛋!在

下面是我的代码-它返回了很多错误-变量story是一个字符串,listOfNouns是一个列表-因此我尝试将字符串拆分为一个列表:

def replacement(story, listOfNouns):   
    length = len(story1)
    story1 = story.split()
    for c in range(0,len(story1)):
        if c in listOfNouns:
             story1[c]= 'NOUN'
             story = ''.join(story)      
    return story

以下是我使用
调用上述函数时得到的错误消息 replacement("Let's play marbles", ['marbles'])

^{pr2}$

如何用另一个列表中的另一个元素替换新的story1列表?在

我如何修改元组并返回新的字符串-它应该是:
Let's play [NOUN]???在

谁能帮忙吗?我迷路了,我已经尝试了几个小时,用我在Python/Java中的所有知识来解决这个问题!在


Tags: 字符串in列表playlen错误单词noun
3条回答

问题是在设置story1的值之前计算story1的长度。在

这里有一个固定版本,它也以一种更“pythonic”的方式迭代,并修复了连接原始字符串而不是拆分字符串的错误。在

def replacement(story, listOfNouns):   
    story1 = story.split()
    for i,word in enumerate(story1):
        if word in listOfNouns:
             story1[i] = '[NOUN]'
    return ' '.join(story1)      

print(replacement("Let's play marbles", ['marbles']))

输出:

^{pr2}$

这是另一种解决方案,它使用正则表达式一次高效地替换单词的所有实例,而不替换包含单词的部分单词。在

import re

stories = [
    'The quick brown fox jumped over the foxy lady.',
    'Fox foxy fox lady ladies lady foxy fox']

def replacement(story, listOfNouns):
    story = re.sub(r'''
        (?ix)   # ignore case, allow verbose regular expression definition
        \b      # word break
        (?:{})  # non-capturing group, string to be inserted
        \b      # word break
        '''.format('|'.join(listOfNouns)),'[NOUN]',story) # OR all words.
    return story

for story in stories:
    print(replacement(story,'fox lady'.split()))

输出:

The quick brown [NOUN] jumped over the foxy [NOUN].
[NOUN] foxy [NOUN] [NOUN] ladies [NOUN] foxy [NOUN]

这里有一个更简单、更简单的方法来解决你的问题。在

def replacement(story, nouns):
    return ' '.join('[NOUN]' if i in nouns else i for i in story.split())

输出

^{pr2}$

“赋值前引用”错误是指:

length = len(story1)
story1 = story.split()

您应该首先指定story1,然后获取其长度。在

相关问题 更多 >

    热门问题