2013-10-09 56 views
0

考慮以下字符串輸入到一個Python化的方法:移動定冠詞到字符串的結尾在Python

福爾摩斯歷險記福爾摩斯

戰爭

的傳說的藝術兩個城市

一個火星

的公主

我想看看下面的輸出:

福爾摩斯

冒險的

孫子兵法,兩個城市的

故事,火星的

公主,A

有什麼想法嗎?

+0

您只是想要一個修復單個標題的函數,還是希望函數能夠轉換整個輸入?而且,如果是後者,是輸入字符串列表,一個帶有換行符的大字符串,一個文本文件......?這些輸入中的空白行是否必須單獨保留爲空字符串/行? – abarnert

+0

@abarnert我可以自己做實際的實現。我只是無法弄清楚實際需要的代碼。 – Soviero

回答

2

首先,split關閉的第一個字:

first, rest = title.split(None, 1) 

現在,檢查第一個字是文章:

if first in {'A', 'An', 'The'}: 

而且,如果是的話,它移動到結束:

return rest + ', ' + first 

把它一起:

def fix_title(title): 
    first, rest = title.split(None, 1) 
    if first in {'A', 'An', 'The'}: 
     return rest + ', ' + first 
    return title 

如果你希望能夠妥善處理空行,你需要更多的邏輯,我覺得在這種情況下,讀取與partition而不是split更好。只要將中間的兩行改爲:

first, _, rest = title.partition(' ') 
    if first in {'A', 'An', 'The'} and rest: 
+0

我喜歡這個,因爲它可以處理字符串中沒有明確文章的時候。 – Soviero

+0

'An'或'A'不是一篇定文 – Spaceghost

+0

@Spaceghost:對,他們是_indefinite_文章。但這真的屬於對這個問題的評論;操作員顯然希望'A'和'An''被移動,他只是用錯誤的措辭來詢問它。 – abarnert

相關問題