【问题标题】:Properly upper casing a lower case string正确地大写小写字符串
【发布时间】:2013-11-12 17:11:48
【问题描述】:

我正在编写一个莫尔斯电码,将文本转换为莫尔斯电码并将莫尔斯电码转换为文本。我已经走得很远了。我留下的问题是如何打印它,也许是一种更聪明的方法来处理错误。

我希望代码的输出符合真实的书写规则。所以如果输入是'你好,你好吗?很好,谢谢!在莫尔斯语中,那么我希望输出是“你好,你好吗?很好,谢谢!',在文本中。

首先我认为我只需要操作 from_morse 和 to_morse 函数中的返回值。像这样:

value[0]+value[1:].lower()

但这只是涵盖了大字头,而不是新句子开始时。

但是创建一个控制返回值的函数是一种更好的方法,还是应该在我的函数中包含该控件?那我该怎么办呢?

代码如下:

tomorse = { } (is a dict with text-Values and morse-Keys. in upper() stile)

frommorse = dict((b,a) for a,b in tomorse.items())



def from_morse(text):
    value = ''
    for word in text.split(' '):
        if word == '':
            value += ' '
        #split the line into words
        for char in word.split():
            #split the word into characters
            if char in frommorse:
                value += frommorse[char].upper()
            else:
                print('Value for' ,char,' not found as morse.')
    return value



def to_morse(text):
    value = ''
    for char in text:
        if char in tomorse:
            value += tomorse[char] + ' '
        elif char == ' ':
            value += ' '
        else:
            print('Value for' ,char, 'not found as character.')
            break
    return value




def text_controll():
    while True:
        try:
            text = input('Enter what you want to convert: ').upper()
            if text.startswith(('.','-')):
                print('Your translation to text is:',from_morse(text))
            else:
                print('Your translation to morse is: ',to_morse(text))
        except (EOFError,KeyboardInterrupt):
            print('Thanks and Godbye!')
            break


text_controll()

【问题讨论】:

  • 嗨!所以你想从一串文本中检测句子边界并相应地大写?

标签: python user-input uppercase casing


【解决方案1】:

为了您自己的理智,from_morseto_morse 应该照他们说的做:根据需要转换为文本和莫尔斯电文。

然后您可以编写另一个函数将句子转换为带有大写和标点符号的句子。

您可以通过查找点、感叹号和问号来检测句子的结尾。然而,有人也可以写“你好吗???”这意味着您不想检测句子“你好吗?”,“?”和 ”?”。换句话说:您还需要检测可以结束一个句子的字符序列。

另一个问题是,有人可能会在句子中使用标点符号,例如提及公司名称 Yahoo!。

【讨论】:

  • 检测一个标点符号后跟一个空格"! " 在大多数情况下会起作用“你好!!!你好吗??”但是你又遇到了标点名称、引号等问题。
猜你喜欢
  • 2011-12-11
  • 2010-12-27
  • 1970-01-01
  • 2016-01-25
  • 1970-01-01
  • 1970-01-01
  • 2020-09-13
  • 1970-01-01
  • 2011-01-16
相关资源
最近更新 更多