2017-11-11 29 views
-1

高清轉換(字符串翻譯):轉換字到其它字保持原來的格式

''' 
>>> translations = {'he':'she', 'brother':'sister'} 
>>> translate('he', translations) 
'she' 
>>> translate('HE', translations) 
'SHE' 
>>> translate('He', translations) 
'She' 
>>> translate('brother', translations) 
'sister' 
>>> translate('my', translations) 
'my' 
''' 

我有這樣的投入。我用translations.get(字符串)讓他和妹妹,它運作良好。但事情是我不能將字符串轉換爲'她'或'他'(原始格式)。 如何在Python中做到這一點?

+1

你可以用'str.lower ()'/'str.title()'按照要求 – ksai

回答

1

您將需要不得不採取更大的字典,大小寫敏感的,或者你的翻譯功能將不得不被修改爲:

  1. 檢測原詞或短語的情況下,所有較低,全部較高,句子或標題。
  2. 查找翻譯不區分大小寫
  3. 重新情況下翻譯文本,以匹配原始。

一些語言,你仍然會有一些問題,如:在一些語言全部大寫包括一些小寫字母有時還是大寫的第二個字母,而不是第一如d」爲前綴會總是小寫或者具有不同的大寫規則,國際單位制中的英國的大寫規則說如果單位是以某人命名的話,它應該總是大寫,但其他國家則以不同的方式做。

1

正如你翻譯的數據結構,我們可以建立的情況下,測試和修正的數據結構:

def iscapitalized(s): 
    return s and s[0].isupper() and s[1:].islower() 

def translate(string, translations): 
    translation = translations.get(string.lower(), string) 

    for test, correction in corrections.items(): 
      if test(string): 
       translation = correction(translation) 
       break 

    return translation 

translations = {'he': 'she', 'brother': 'sister'} 

corrections = {str.isupper: str.upper, str.islower: str.lower, iscapitalized: str.capitalize} 

print(translate('he', translations)) 
print(translate('HE', translations)) 
print(translate('He', translations)) 
print(translate('brother', translations)) 
print(translate('my', translations)) 

輸出

> python3 test.py 
she 
SHE 
She 
sister 
my 
> 
相關問題