Python 3 - 如何在翻译莫尔斯电码时将每个句子的第一个字母大写

时间:2016-11-14 18:11:42

标签: python string translate capitalize sentence

我正在尝试将莫尔斯代码翻译成单词和句子,这一切都很好......除了一件事。我的整个输出都是小写的,我希望能够将每个句子的每个首字母大写。

这是我目前的代码:

 text = input()
        if is_morse(text):
            lst = text.split(" ")
            text = ""
            for e in lst:
                text += TO_TEXT[e].lower()
            print(text)

拆分列表中的每个元素都等于一个字符(但在莫尔斯中)不是WORD。 ' TO_TEXT'是一本字典。有没有人有一个简单的解决方案?我是编程和Python btw的初学者,所以我可能不理解一些解决方案...

3 个答案:

答案 0 :(得分:1)

从代码中可以理解的是,我可以说你可以使用python的title()函数。 要获得更严格的结果,您可以使用导入capwords()类的string函数。

这是您从关于词汇的Python文档中获得的:

  

使用str.split()将参数拆分为单词,使用str.capitalize()对每个单词进行大写,并使用str.join()连接大写单词。如果可选的第二个参数sep不存在或者None,则用空格字符替换单个空格,并删除前导和尾部空格,否则使用sep来拆分和连接单词。

答案 1 :(得分:1)

保持一个标志,告诉你这是否是新句子的第一个字母。用它来决定这封信是否应该是大写的。

text = input()
if is_morse(text):
    lst = text.split(" ")
    text = ""
    first_letter = True
    for e in lst:
        if first_letter:
            this_letter = TO_TEXT[e].upper()
        else:
            this_letter = TO_TEXT[e].lower()

        # Period heralds a new sentence. 
        first_letter = this_letter == "."  

        text += this_letter
    print(text)

答案 2 :(得分:0)

假设你有text

text = "this is a sentence. this is also a sentence"

您可以通过以下方式对每个句子的第一个字母进行大写:

  1. text个字符
  2. 上拆分'.'
  3. 从每个项目的开头和结尾删除空格
  4. 将每个项目的第一个字母大写
  5. 使用'. '
  6. 重新加入项目

    分步编码:

      originals  = text.split('.')
      trimmed    = [ sentence.strip() for sentence in originals ]
      uppercased = [ sentence[0].upper() + sentence[1:] for sentence in trimmed ]
      rejoined   = '. '.join(uppercased)
    

    您希望将其打包成一个功能。无需创建所有这些中间list对象,您可以使用for循环或generators来完成。