這裏有一個可行的解決方案,基於輸入字符串的結構:運行
str="suleman, h (2001) Some Random Piece Of Junk, Journal of Junk, ACM, pp1-100, 2000"
parts=str.split(',')
newparts=[]
for chunk in parts[:-3]:
newparts.append(chunk.title())
newparts.append(parts[3].upper())
for chunk in parts[4:]:
newparts.append(chunk.lower())
newstr=",".join(newparts)
print newstr
結果:
11:41 ~ $ python test.py
Suleman, H (2001) Some Random Piece Of Junk, Journal Of Junk, ACM, pp1-100, 2000
我原本以爲.title僞()將符合資本化提供你你但需要像ACM那樣需要完全封閉的條款,以及需要完全小寫的部分,如'pp1-100'。所以我採取了更結構化的方法。請注意,這不適用於複合參考。我懷疑必須有一個特定的python庫來處理引用的正確大小寫。但是,由於規則可能比較複雜,插入不總是很乾淨,所以無法保證正確的處理。
上面詳細介紹的方法假定最後三個逗號分隔的詞語是特殊情況,但以前的所有內容都遵循TitleCase規則。
建議:
防守碼的輸入字段,以便您想要的信息以某種方式予以資本化組合在一起。即,TitleCase字段,ALL CAPS字段,ALL LOWER字段和LEAVE-AS-IS字段。
然後在代碼中相應地處理。
[你有什麼嘗試?](http://mattgemmell.com/2008/12/08/what-have-you-tried/) –
你能描述一下這個轉換中涉及的規則嗎?如果你不能,而你所擁有的只是「那麼,它看起來就是第二種方式,不是嗎?」,你唯一的希望就是編寫某種AI(例如訓練神經網絡)。但是如果你有規則,把它們寫下來,找到並解決它們之間的任何矛盾或訂購要求,那麼它應該很容易變成代碼。 – abarnert