如何存储字符串的最后n个字符以连接到Python中的用户输入?

问题描述 投票:-1回答:1

在“首先学习编码”中,有一个简短的练习,涉及创建一个函数来替换文本中的占位符。如果占位符的结尾是!!!!!,则此代码仅返回最后一个感叹号。我们如何修改代码,以便当用户提供单词SPAM代替NOUN !!!,作为输入时,processed_line将返回SPAM !!!,

这是代码:

placeholders = ['NOUN', 'VERB_ING', 'ADJECTIVE', 'VERB']
endings = ['.', ',', ';', ':', '?', '!']


def process_line(line):
    global placeholders
    global endings
    processed_line = ''

    words = line.split()


    for word in words:
        stripped = word.strip(',.;:?!')
        if stripped in placeholders:
            answer = input(f'Enter a {stripped}:')
            processed_line = processed_line + answer
            if word[-1] in endings:
                processed_line = processed_line + word[-1] + ' '
            else:
                processed_line = processed_line + ' '
        else:
            processed_line = processed_line + word + ' '
    return processed_line + '\n'
python string replace concatenation slice
1个回答
0
投票

您首先删除了标点符号。请稍后再添加它们,它应该可以正常工作:

placeholders = ['NOUN', 'VERB_ING', 'ADJECTIVE', 'VERB']
endings = ['.', ',', ';', ':', '?', '!']


def process_line(line):
    global placeholders
    global endings
    processed_line = ''

    words = line.split()

    def keep(string, chars):
      return ''.join([i for i in string if i in chars])

    for word in words:
        stripped = word.strip(',.;:?!')
        leftovers = keep(word, ',.;:?!')
        if stripped in placeholders:
            loc = placeholders.index(stripped)
            answer = input(f'Enter a {stripped}:')
            processed_line += answer + leftovers # here is what's new
            if word[-1] in endings:
                processed_line = processed_line + word[-1] + ' '
            else:
                processed_line = processed_line + ' '
        else:
            processed_line = processed_line + word + ' '
    return processed_line + '\n'

print(process_line('hello, NOUN! I am Joe.'))
© www.soinside.com 2019 - 2024. All rights reserved.