繁体   English   中英

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

[英]How to store the last n characters of a string to concatenate to the user input in Python?

在 Head First Learn to Code 中有一个简短的练习,涉及创建一个函数来替换文本中的占位符。 如果占位符的结尾是!!!!!! 此代码仅返回最后一个感叹号。 我们如何修改代码,以便当用户提供单词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'

你一开始就去掉了标点符号。 稍后将它们添加回来,它应该可以工作:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM